erool950 发表于 2014-3-10 00:14:52

一个C的小问题


[*]#include <stdio.h>
[*]main()
[*]{
[*]      int a = 011;
[*]      printf("%d", a ++);
[*]}
[*]答案为什么不是10,a是8进制表示的,10进制表示为9,a++后a的值应该是10啊

j_t_zeng 发表于 2014-3-10 00:14:53

011的确表示的是八进制数9,但a++是后缀自增,先是他的原值9,再增加1为10.
前缀的话(++a),是用自增后的值10,。

machimilk 发表于 2014-3-10 00:48:29

a++ a是011 是十进制的9,执行打印的时候a是9 执行完才++ 变成10,如果想让他当时就自增要这么写
printf("%d",++a);

musilintan 发表于 2014-3-10 09:03:25

a++的用法:在作为表达式的参数时,应该先使用a的值。等表达式计算完毕后再给a进行++自增操作。
++a的用法:在作为表达式的参数时,应该先进行++自增操作,然后再使用自增后a的值进行表达式的计算。
简单概括就是a++是先用a,++a是自增再用a。--操作符同上。。。。

Antent 发表于 2014-3-10 09:04:10

楼上说的对!a++是语句处理后a才自增的,++a是自增后在处理语句!所以你的a++就是先显示了a的值后,a才+1

myisland 发表于 2014-3-10 10:58:41

int a,b=0
a = b++;

% a = b
% b= b+1;

枫界易城 发表于 2014-3-10 13:20:51

a++是先使用a之后再进行++的,lz明白否!

苦涩 发表于 2014-3-10 14:41:23

a++是后加所以就是9啊

erool950 发表于 2014-3-11 00:05:27

了解。。。谢谢各位
页: [1]
查看完整版本: 一个C的小问题