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

[复制链接]
4153|25
 楼主| shuidi_wangdan 发表于 2014-1-10 09:56 | 显示全部楼层 |阅读模式
定义一下 :
unsigned char table[10]=0, num=0,value=0;

table [num++]=value;

上面这条语句是先num++,还是先赋值啊?
kk8346 发表于 2014-1-10 09:58 | 显示全部楼层
等效于:
table[num] = value;
num = num + 1;

评分

参与人数 1威望 +2 收起 理由
shuidi_wangdan + 2 很给力!

查看全部评分

 楼主| shuidi_wangdan 发表于 2014-1-10 10:06 | 显示全部楼层
kk8346 发表于 2014-1-10 09:58
等效于:
table[num] = value;
num = num + 1;

不是先num++?
南宫云明 发表于 2014-1-10 10:12 | 显示全部楼层
应该是先num++的,赋值语句的地位向来比较低的。。。

评分

参与人数 1威望 +3 收起 理由
shuidi_wangdan + 3 很给力!

查看全部评分

南宫云明 发表于 2014-1-10 10:13 | 显示全部楼层
但是结果跟2楼的是一样的
 楼主| shuidi_wangdan 发表于 2014-1-10 10:15 | 显示全部楼层
南宫云明 发表于 2014-1-10 10:12
应该是先num++的,赋值语句的地位向来比较低的。。。

我觉得还是分开写的好,总感觉这样不安全!
南宫云明 发表于 2014-1-10 10:18 | 显示全部楼层
shuidi_wangdan 发表于 2014-1-10 10:15
我觉得还是分开写的好,总感觉这样不安全!

那是当然分开写好,这样很容易给人误导。。。。

比如当前num = 10;

table[num++];的结果也是table[10],执行完后num = 11。但是很多时候我们可能一不小心就认为是table[11]了
 楼主| shuidi_wangdan 发表于 2014-1-10 10:25 | 显示全部楼层
谢谢大家!
kk8346 发表于 2014-1-10 10:25 | 显示全部楼层
shuidi_wangdan 发表于 2014-1-10 10:15
我觉得还是分开写的好,总感觉这样不安全!

哪种写法都可以,关键是要理解语句的执行过程。
 楼主| shuidi_wangdan 发表于 2014-1-10 10:26 | 显示全部楼层
南宫云明 发表于 2014-1-10 10:18
那是当然分开写好,这样很容易给人误导。。。。

比如当前num = 10;

对,我现在就有这种感觉!分开写明了,不会让人产生歧义。
chenyu988 发表于 2014-1-10 10:34 | 显示全部楼层
C语言符号优先级问题,++的优先级大于=
ZUI135 发表于 2014-1-13 16:48 | 显示全部楼层
unsigned char table[10]=0, num=0,value=0;

table [num++]=value;


假设增加一个临时变量可能你会更清晰 temp;
table [num++]=value
等效
temp = num++;
table[temp] = value;

temp = num;
num++;
table[temp] = value;
chenbb8 发表于 2014-1-14 09:27 | 显示全部楼层
ZUI135 发表于 2014-1-13 16:48
unsigned char table[10]=0, num=0,value=0;

table [num++]=value;

反了,你这是table[++num]的效果。
chenbb8 发表于 2014-1-14 09:29 | 显示全部楼层
看来不应该自增数组下标的建议 的确是应该的。
 楼主| shuidi_wangdan 发表于 2014-1-17 08:03 | 显示全部楼层
chenbb8 发表于 2014-1-14 09:27
反了,你这是table[++num]的效果。

没有,我试过了,确实是先赋值,在进行自加加。
 楼主| shuidi_wangdan 发表于 2014-1-17 08:04 | 显示全部楼层
这个地方确实让人容易误会!要改变这种习惯。
chenbb8 发表于 2014-1-17 09:01 | 显示全部楼层
shuidi_wangdan 发表于 2014-1-17 08:03
没有,我试过了,确实是先赋值,在进行自加加。

你用的是什么编译器,我印象中没遇到过先++的现象。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| shuidi_wangdan 发表于 2014-1-17 09:34 | 显示全部楼层
本帖最后由 shuidi_wangdan 于 2014-1-17 09:35 编辑
chenbb8 发表于 2014-1-17 09:01
你用的是什么编译器,我印象中没遇到过先++的现象。

我用的是MPLAB IDE C18的编译器,我用12864液晶显示,发现这个现象的!
 楼主| shuidi_wangdan 发表于 2014-1-17 09:47 | 显示全部楼层
shuidi_wangdan 发表于 2014-1-17 09:34
我用的是MPLAB IDE C18的编译器,我用12864液晶显示,发现这个现象的!

是先赋值,再++!
chenbb8 发表于 2014-1-17 10:15 | 显示全部楼层
shuidi_wangdan 发表于 2014-1-17 09:34
我用的是MPLAB IDE C18的编译器,我用12864液晶显示,发现这个现象的!

嗯,看帖不仔细,理解错你的意思了~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:奇葩满天下,不分你我他! 奋斗!https://bbs.21ic.com/static/image/smiley/chubby/17.gif[/url]

65

主题

549

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部