一个C的小问题
[*]#include <stdio.h>
[*]main()
[*]{
[*] int a = 011;
[*] printf("%d", a ++);
[*]}
[*]答案为什么不是10,a是8进制表示的,10进制表示为9,a++后a的值应该是10啊
011的确表示的是八进制数9,但a++是后缀自增,先是他的原值9,再增加1为10.
前缀的话(++a),是用自增后的值10,。 a++ a是011 是十进制的9,执行打印的时候a是9 执行完才++ 变成10,如果想让他当时就自增要这么写
printf("%d",++a); a++的用法:在作为表达式的参数时,应该先使用a的值。等表达式计算完毕后再给a进行++自增操作。
++a的用法:在作为表达式的参数时,应该先进行++自增操作,然后再使用自增后a的值进行表达式的计算。
简单概括就是a++是先用a,++a是自增再用a。--操作符同上。。。。 楼上说的对!a++是语句处理后a才自增的,++a是自增后在处理语句!所以你的a++就是先显示了a的值后,a才+1 int a,b=0
a = b++;
% a = b
% b= b+1; a++是先使用a之后再进行++的,lz明白否! a++是后加所以就是9啊 了解。。。谢谢各位
页:
[1]