C++学习记录2--常量及运算符释疑
2017-02-23 14:08
691 查看
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/5,
4/5.0或
4.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。
为防止此类情况,在逻辑运算符中应避免出现自增、自减等运算。
相关文章推荐
- 学习C++ -> 变量、常量与运算符
- 【学习C++】学习C++ -> 变量、常量与运算符
- C++学习心得--常量、初始化
- 记录一个新人的C++之路,以供后来的新人学习
- 20101229学习记录C++ STL
- 成员函数声明为常量的解释--C++学习笔记
- C++学习文章链接记录
- 记录我在C++学习中的点点滴滴!
- C++学习笔记 --- 枚举常量
- 学习C++零星记录
- [C++再学习系列] 类常量
- C++ 对象模型学习记录(2)--- 第3章 data语义学
- 关于c++的学习情况,不再更新了,因为找到了更好的笔记记录工具
- C++中栈区 堆区 常量区(由一道面试题目而学习)
- [C++再学习系列] 类常量
- C++学习-常量
- C++中运算符优先级的学习注解
- 记录自己学习C++的点滴,(高手请指点) 偶能承受打击
- [C/C++] 为什么把常量写在 == 运算符的左边
- 20101231学习记录C++ STL