zoukankan      html  css  js  c++  java
  • 第二章 变量和基本类型

    通常将8位的快作为一个字节.32位或者4个字节作为一个"字"(word);
     
    在大多数机器上,使用int类型进行整型计算不易出错.就技术上而言,int类型用16位表示---这对大多数应用来说太小了.实际应用中,大多数通用机器都是使用和long类型一样长的32位来表示int类型.
     
    为了兼容C语言,C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符.
    如:  'A' 表示单个字符A,然而"A"表示包含字母A和空字符两个字符的字符串.
     
    有一些非法的表达方法:
    1. "two" L"some" 非法.因为字符串字面值与宽字符串字面值的连接是未定义的.
    2.1024f 非法:因为整数后面不能带后缀f.error: invalid suffix "f" on integer constant|
    3.3.14UL 非法:因为浮点字面只能带后缀Uerror: invalid suffix "U" on floating constant|
     
    C++ 中的标识符都是大小写敏感的.
    下面定义了4个不同的标识符:
    int somename,someName,SomeName,SOMENAME;
     
    变量命名习惯:
    1.变量名一般用小写.通常写成index,而不写Index或者INDEX;
    2.标识符应使用能帮助记忆的名字.
    3.包含多个词的标识符可以在每个词之间添加一个下划线,或者每个内嵌的词的首字母大写.如student_loan或studentLoan
     
    初始化和赋值的问题
    在C++中理解"初始化不是赋值"是必要的.初始化指创建变量并给它赋初始值,而赋值则是擦除对象的当前值并用新值代替。
    C++支持两种初始化变量的形式: 
    1.复制初始化(copy-initializationi)  int ival = 1024;
    2.直接初始化(direct-initialization) int ival(1024);
    使用=来初始化变量使得许多c++编程新手感到迷惑,他们很容易把初始化当成是赋值的一种形式.但是在c++中初始化和赋值是两种不同的操作.c++中只有在编写非常复杂的类才会凸显这两者之间的区别.直接初始化语法更灵活且效率更高.
     
    常量在定义时必须初始化
    因为常量在定以后就不能被修改,所以定义时必须初始或:
    const std::string hi = "hello";//ok:initialized;
    const int i,j=0;//error:i is uninitialized const;
     
    const引用可以初始化为不同类型的对象或者初始化为右值,如字面值常量:
    int i =42;
    const int &r =42;
    const int &r2= r+i;
    注意到const引用是只读的.
     
    不要忘记类定义后面的分号,这是个普遍的错误!
     
     
    在函数体外定义的变量都初始化为0,在函数体里定义的内置类型变量不进行自动初始化..
     
     
     
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    string global_str;
    int global_int;
    int main()
    {
    int local_int;
    string local_str;
    cout<<global_str<<endl;      //空
    cout<<local_str<<endl;         //空
    cout<<global_int<<endl;//0
    cout<<local_int<<endl;         //未初始化
     
    return 0;
    }
  • 相关阅读:
    【leetcode】1215.Stepping Numbers
    【leetcode】1214.Two Sum BSTs
    【leetcode】1213.Intersection of Three Sorted Arrays
    【leetcode】1210. Minimum Moves to Reach Target with Rotations
    【leetcode】1209. Remove All Adjacent Duplicates in String II
    【leetcode】1208. Get Equal Substrings Within Budget
    【leetcode】1207. Unique Number of Occurrences
    【leetcode】689. Maximum Sum of 3 Non-Overlapping Subarrays
    【leetcode】LCP 3. Programmable Robot
    【leetcode】LCP 1. Guess Numbers
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3237765.html
Copyright © 2011-2022 走看看