打印
[C语言]

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

[复制链接]
3510|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
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 很给力!
5
南宫云明| | 2014-1-10 10:13 | 只看该作者
但是结果跟2楼的是一样的

使用特权

评论回复
6
shuidi_wangdan|  楼主 | 2014-1-10 10:15 | 只看该作者
南宫云明 发表于 2014-1-10 10:12
应该是先num++的,赋值语句的地位向来比较低的。。。

我觉得还是分开写的好,总感觉这样不安全!

使用特权

评论回复
7
南宫云明| | 2014-1-10 10:18 | 只看该作者
shuidi_wangdan 发表于 2014-1-10 10:15
我觉得还是分开写的好,总感觉这样不安全!

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

比如当前num = 10;

table[num++];的结果也是table[10],执行完后num = 11。但是很多时候我们可能一不小心就认为是table[11]了

使用特权

评论回复
8
shuidi_wangdan|  楼主 | 2014-1-10 10:25 | 只看该作者
谢谢大家!

使用特权

评论回复
9
kk8346| | 2014-1-10 10:25 | 只看该作者
shuidi_wangdan 发表于 2014-1-10 10:15
我觉得还是分开写的好,总感觉这样不安全!

哪种写法都可以,关键是要理解语句的执行过程。

使用特权

评论回复
10
shuidi_wangdan|  楼主 | 2014-1-10 10:26 | 只看该作者
南宫云明 发表于 2014-1-10 10:18
那是当然分开写好,这样很容易给人误导。。。。

比如当前num = 10;

对,我现在就有这种感觉!分开写明了,不会让人产生歧义。

使用特权

评论回复
11
chenyu988| | 2014-1-10 10:34 | 只看该作者
C语言符号优先级问题,++的优先级大于=

使用特权

评论回复
12
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;

使用特权

评论回复
13
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]的效果。

使用特权

评论回复
14
chenbb8| | 2014-1-14 09:29 | 只看该作者
看来不应该自增数组下标的建议 的确是应该的。

使用特权

评论回复
15
shuidi_wangdan|  楼主 | 2014-1-17 08:03 | 只看该作者
chenbb8 发表于 2014-1-14 09:27
反了,你这是table[++num]的效果。

没有,我试过了,确实是先赋值,在进行自加加。

使用特权

评论回复
16
shuidi_wangdan|  楼主 | 2014-1-17 08:04 | 只看该作者
这个地方确实让人容易误会!要改变这种习惯。

使用特权

评论回复
17
chenbb8| | 2014-1-17 09:01 | 只看该作者
shuidi_wangdan 发表于 2014-1-17 08:03
没有,我试过了,确实是先赋值,在进行自加加。

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

使用特权

评论回复
18
shuidi_wangdan|  楼主 | 2014-1-17 09:34 | 只看该作者
本帖最后由 shuidi_wangdan 于 2014-1-17 09:35 编辑
chenbb8 发表于 2014-1-17 09:01
你用的是什么编译器,我印象中没遇到过先++的现象。

我用的是MPLAB IDE C18的编译器,我用12864液晶显示,发现这个现象的!

使用特权

评论回复
19
shuidi_wangdan|  楼主 | 2014-1-17 09:47 | 只看该作者
shuidi_wangdan 发表于 2014-1-17 09:34
我用的是MPLAB IDE C18的编译器,我用12864液晶显示,发现这个现象的!

是先赋值,再++!

使用特权

评论回复
20
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

粉丝