C语言细节之二 : 表达式
2010-05-22 09:14
225 查看
1、
(1)int i = 7;
printf("%d\n", i++ * i++); // 49
解释:后缀自加和自减在输出原值以后,对原变量的改变操作并不是马上接着做的。
此处就是在整个表达式都利用原值进行运算之后,才对i做两次自加
(2)int i = 7;
printf("%d\n", ++i * ++i); // 81
解释:++i后就已经把i变成8,再++i后,i变成9,
此时再把两个i(为9)的临时变量相乘得到81
(3)int i = 7;
printf("%d\n", ++i * i++); // 64
解释:++i后就已经把i变成8,再i++返回的是i的现值8,
此时再把一个i(为8)与另一个数字8相乘
(4)int i = 7;
printf("%d\n", i++ * ++i); // 64
解释:i++返回的是i的现值,而++i后就把i(还为7)变成8,所以第一个返回的是8,第二个也是8
2、 ?表达式不可以做左值
(1)int i = 7;
printf("%d\n", i++ * i++); // 49
解释:后缀自加和自减在输出原值以后,对原变量的改变操作并不是马上接着做的。
此处就是在整个表达式都利用原值进行运算之后,才对i做两次自加
(2)int i = 7;
printf("%d\n", ++i * ++i); // 81
解释:++i后就已经把i变成8,再++i后,i变成9,
此时再把两个i(为9)的临时变量相乘得到81
(3)int i = 7;
printf("%d\n", ++i * i++); // 64
解释:++i后就已经把i变成8,再i++返回的是i的现值8,
此时再把一个i(为8)与另一个数字8相乘
(4)int i = 7;
printf("%d\n", i++ * ++i); // 64
解释:i++返回的是i的现值,而++i后就把i(还为7)变成8,所以第一个返回的是8,第二个也是8
2、 ?表达式不可以做左值
相关文章推荐
- 程序猿之---C语言细节18(一些奇怪表达式)
- 程序员之---C语言细节18(一些奇怪表达式)
- 用c语言做一个栈,完成逆波兰表达式
- c语言中的正则表达式regex.h
- 如何在C语言中巧用正则表达式
- C语言嵌入正则表达式
- 读朱兆祺攻破C语言之二----数据存储与变量
- (转+原创)c语言那些细节之a+1和&a+1的区别 ,指针的步长问题。
- C语言printf函数输出表达式中的计算顺序
- C语言————常量 、变量、 表达式、 语句详谈
- 程序猿之---C语言细节10(++操作很可能你会出错)
- 我也要学C语言-第十五章:指针与字符串以及链式表达式
- 表达式求值c语言
- 程序猿之---C语言细节14(字符串数组内存分配细节‘\0’空字符、字符串数组赋值细节、字符串换行连接和下标)
- C语言 算术表达式
- 程序猿之--C语言细节15(预处理命令细节#error、运算符#和##、__FILE__、__LINE__)
- 程序猿之---C语言细节16(看了绝对值,编译类型ANSI C和K&R C类型判断,c编译器类型转换bug的细节)
- 如何在C语言中巧用正则表达式
- C语言二分查找法实现与细节
- C语言一个细节地方的说明【防止使用不当而出错】