【C++ Primer Plus 】- chap 3 处理数据

简单变量

变量名

  • 两个下划线,或者下划线开头和大写字母开头的名称,保留给实现。
  • 一个下划线的名称被保留给实现,用作全局标识符。

整型

  • 宽度(width),用于描述存储整数时使用的内存量。
  • C++提供了一种灵活的标准,确保了最小长度:
    • short至少16位
    • int至少与short一样长
    • long至少32位,至少与int一样长
    • long long至少64位,至少与long一样长
  • 字节的含义依赖于实现
  • climits头文件有一些整型限制信息。
  • size of
    • 返回类型或者变量的长度,单位为字节
    • 对类型名,名称放在括号内
sizeof (int)
  • 对变量名,括号是可选的
sizeof var
  • 初始化
int wrens(432);  //()
int emus{7};  // {}
int reheas = {15};  // = is optional
int rocs = {}; // set rocs to 0
  • 无符号类型
    • unsigned 就是 unsigned int
  • 选择整型类型
    • 自然长度(natural size): 计算机处理起来效率最高的长度
    • int 通常是最“自然”的长度 (所以有整型提升)
    • 1-9开头:十进制,0开头第二位1-7:八进制,0x:十六进制
int x=15645;
cout<<hex; 
cout <<x<<endl;
cout<<oct;
cout<<x<<endl;
  • std::hex,std::oct
  • 如何确定整型常量的类型
    • 一般都视为int, 除非有特殊后缀,或者int放不下
    • 后缀: u->unsigned int, uL->unsigned long, uLL->unsigned long long, L->long, LL->long long;
  • char
    • cout.put(), 显示一个字符
    • 转义字符可以用代码,八进制,十六进制表示,但是数字表示的与特定编码方式相关,而符号表示适用于任何编码。
    • 通用字符名:允许实现提供扩展源字符集和扩展执行字符集。
      • \u + 八个十六进制位
      • \U + 十六个十六进制位
      • 这两种表示的是ISO 10646码点
    • signed char 和 unsigned char
char a; // may be signed, may be unsigned
signed char b; // definitely signed, -128~127
unsigned char c; // definitely unsigned, 0~255
  • wcha_t:宽字符类型,可以表示扩展字符集,可以表示系统使用的最大扩展字符集。
    • 底层类型取决于实现
    • wcin, wcout
  • char16_t,char32_t:都是无符号,都有底层类型——一种内置的整型,可能随系统。
    • char16_t: 长16位
    • char32_t: 长32位

const

  • 声明的时候,一定要初始化

浮点类型

  • 有效位要求:
    • float至少32位
    • double至少48位,且不少于float
    • long double至少和double一样多
  • 头文件cfloat or float.h可以看一些系统限制。
  • 常量后缀:
    • f or F: float, l or L:long double
    • 一般是double
    • 有些ANSI C之前的编译器的C++实现不支持f,那就用(float) x, or float(x).

算术运算符

  • 两个运算符的优先级相同的时候,看结合性是从左往右还是从右往左
  • 仅当两个运算符被用于同一个操作数的时候,优先级和结合性规则才有效

类型转换

  • {} 列表初始化
    • 不允许缩窄 narrowing
    • 看类型 or 常量, ex:
int x=55;
char ch = {x};  //not allowed,虽然55可以放下,但x是个变量,编译器不知道可不可以所以就不给放
  • 表达式中
    • 整型提升:bool, char, unsigned char, signed char, short都会转成int,如果short比int短,则unsigned short转成int; short and int长度相同的话, ->unsigned int
    • wchar_t提升成第一个宽度够的类型,int, unsigned int, long, unsigned long;
  • static_cast (value);
  • auto
    • C++11
    • 根据初始值自动判断
std::vector<double> scores;
std::vector<double>::iterator pv = scores.begin();
// auto pv= scores.begin();

习题

  • auto crat=U'\U00002155' //char32_t类型

原文链接: https://www.cnblogs.com/xuwanwei/p/12844713.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    【C++ Primer Plus 】- chap 3 处理数据

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/346889

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午4:11
下一篇 2023年3月2日 上午4:12

相关推荐