C++学习记录2--常量及运算符释疑

来源:互联网 发布:票务系统源码 编辑:程序博客网 时间:2024/06/03 18:39

1、sizeof("abed\0fg")的值是?

  sizeof(表达式) 的运算结果是表达式的存储字节数"abed\0f"是一个字符串常量,字符串常量系统会自动在其末位添加空字符'\0';同时"abed\0f"中,有转义字符\,构成空字符'\0',故存在:'a','b','e','d','\0','f','g','\0'8个字节。

2、sizeof("abed\056")的值是?

  字符串末尾依旧会自动添加'\0'。C++中,若转移字符后是一个整形常量,则必须是一个八进制或者以x开头的十六进制,大小在0~255之间,此时,转移字符后面跟'\056',为八进制表示,实为表示ASCII码为46的字符(.),故存在'a','b','e','d','\056'(相当于'.'),'\0'6个字节。

3、有整形变量x,y,其中y!=0,则x=x/y*y+x%y

  4/5 运算结果为0;
  5/4 运算救过为1;
  4.0/54/5.04.0/5.0运算结果为0.8。

4、逻辑运算符会自行优化

  int x=1,y=1,z=1;执行++x||++y&&++z后,x,y,z的值?
  运算符优先级括号>指针>算数运算>关系运算>位运算>逻辑运算>条件运算>赋值>逗号
  而逻辑运算符中,!>&&>|| (只改变结合顺序)。
  故++x||++y&&++z相当于++x||(++y&&++z),然而,优先级只是改变了变量的结合顺序,而不是先做&&。实际上,++x结果为ture,运算结束。即x=2,y=1,z=1。
  为防止此类情况,在逻辑运算符中应避免出现自增、自减等运算。

0 0
原创粉丝点击