谈谈逗号表达式

    前天做题的时候,遇到二维数组的指针问题。


      我在第一眼看到这道题,很明显的认为输出应该是0。很明显,我忽略了逗号表达式的用法,因为在我目前所学的情况下,逗号表达式并不常用,在以往强调的重点中,一直认为p[0]就是数组的第一个数字,所以a[0]是(0,1),而指向a[0]指针的p指向的位置就是a[0]的位置,P[0]就是a[0]的第一个位置,即就是0。

    逗号表达式:多个表达式可以用逗号隔开,其中用逗号分开的表达式的值分别计算,但整个表达式的值是最后一个表达式的值。

    所以a[0]=(0,1),但是(0,1)里面是逗号表达式,所以指向a[0]的指针p所指向的是1。

    

    这是我遇到的第二个题目,语句1我很快可以得到答案,a1=8;

    但是语句2算逗号表达式吗?我想了想,也认为是8,当然,答案错了,a2=4;

    语句1中,a1=(++b,c--,d+3);a1=(3,7,8),这里需要注意++b和c--的区别,然后根据逗号表达式,a1=8;

    语句2中,a2=++b,c--,d+3;a2=4,6,11,但是此刻后面的表达式没有小括号,也就是说,这不是逗号表达式,而是加了一个赋值的语句,逗号表达式的优先级最低,所以a2=4;

    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值