发新帖我要提问
12
返回列表
打印
[C语言]

请教C语言自加加的问题!

[复制链接]
楼主: shuidi_wangdan
手机看帖
扫描二维码
随时随地手机跟帖
21
kseeker| | 2014-1-17 10:24 | 只看该作者 回帖奖励 |倒序浏览
num++和++num是不同的。num++返回的值是自增以前的值,是一个临时变量。
对于table [num++]=value;先赋值还是先++结果没有任何不同。
这是C里非常常用的一种用法,没有任何会造成误解的地方。

使用特权

评论回复
22
shuidi_wangdan|  楼主 | 2014-1-17 16:41 | 只看该作者
chenbb8 发表于 2014-1-17 10:15
嗯,看帖不仔细,理解错你的意思了~

呵呵,我有时也这样。

使用特权

评论回复
23
shuidi_wangdan|  楼主 | 2014-1-17 16:43 | 只看该作者
kseeker 发表于 2014-1-17 10:24
num++和++num是不同的。num++返回的值是自增以前的值,是一个临时变量。
对于table [num++]=value;先赋值 ...

我刚开始理解是先++后赋值,经过自己的实际操作发现自己的理解是错误的。

使用特权

评论回复
24
guangbiao| | 2014-1-17 17:32 | 只看该作者
印象中时先赋值再++
楼主这种用法我很少用,但以下写法我经常用哦。。。
unsigned char  Table[10]=0,
unsigned char  value=0;
pTable = Table;
*pTable++ = value;

到目前为止,好像还没有遇到过问题。。。

使用特权

评论回复
25
shuidi_wangdan|  楼主 | 2014-1-18 08:08 | 只看该作者
guangbiao 发表于 2014-1-17 17:32
印象中时先赋值再++
楼主这种用法我很少用,但以下写法我经常用哦。。。
unsigned char  Table[10]=0,

你这种用法比较直观,关键是用着方便才最佳选择。

使用特权

评论回复
26
liub_2014| | 2014-4-11 15:28 | 只看该作者
结果等效于2L所示的,但先是num加1 还是table[num]=value这得看编译器了。这个问题主要在于是先计算左值还是右值,这跟编译器,表达式不同而不同的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则