免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3801 | 回复: 8
打印 上一主题 下一主题

菜鸟又遇到一个问题了,关于逗号表达式 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-13 21:41 |只看该作者 |倒序浏览
今天一直在看C,遇到些问题,中午才问过了,这不,又不会了

在看一本电子书,里面有这么一句话,不是很理解,主要是不明白这个逗号运算符怎么传给二维数组的~~~把1,3,5传给它了,那么0,2,4呢~?这个部分没有掌握好,求老师们赐教


-----------------------------------------------------------------------------------------------
#include <stdio.h>
int main(int argc,char * argv[])
{
    int a [3][2]={(0,1),(2,3),(4,5)};
    int *p;
    p=a [0];
    printf("%d",p[0]);
}
问打印出来的结果是多少?
很多人都觉得这太简单了,很快就能把答案告诉我:0。不过很可惜,错了。答案应该是1。如果你也认为是0,那你实在应该好好看看这个题。花括号里面嵌套的是小括号,而不是花括号!这里是花括号里面嵌套了逗号表达式!其实这个赋值就相当于int a [3][2]={ 1, 3,5};
所以,在初始化二维数组的时候一定要注意,别不小心把应该用的花括号写成小括号了。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
2 [报告]
发表于 2011-11-13 21:49 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2011-11-13 21:50 |只看该作者
gcc 给出的警告很直接啊:
test.c: In function ‘main’:
test.c:4:21: warning: left-hand operand of comma expression has no effect [-Wunused-value]
test.c:4:5: warning: missing braces around initializer [-Wmissing-braces]
test.c:4:5: warning: (near initialization for ‘a[0]’) [-Wmissing-braces]
test.c:4:27: warning: left-hand operand of comma expression has no effect [-Wunused-value]
test.c:4:33: warning: left-hand operand of comma expression has no effect [-Wunused-value]
test.c:8:1: warning: control reaches end of non-void function [-Wreturn-type]

论坛徽章:
0
4 [报告]
发表于 2011-11-13 22:10 |只看该作者
回复 3# fallening


    正准备在ubuntu摸一下gcc呢,不过我啥都是新手~

论坛徽章:
0
5 [报告]
发表于 2011-11-13 22:15 |只看该作者
回复 2# pmerofc


    可能那个人想提醒说初学的人会不小心把{}写成()了,那么就相当于{1,3,5}了,那么为什么写成{(0,1),(2,3),(4,5)}了~~~就相当于那个了呢~~~~我好像学晕了~

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
6 [报告]
发表于 2011-11-13 22:26 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7
发表于 2011-11-14 16:17
#include <stdio.h>
int main(int argc,char * argv[])
{
    int a [3][2]={(0,1),(2,3),(4,5)};
    int *p;
    p=a [0];
    printf("%d",p[0]);
}
这个不清楚
http://www.74981.com

论坛徽章:
0
8 [报告]
发表于 2011-11-14 16:24 |只看该作者
回复 6# pmerofc
其实有本书叫做 C缺陷和陷阱
学习正确的方法编程叫做入门
能判别什么是正确和错误的方法才是高手的标准

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
9 [报告]
发表于 2011-11-14 18:24 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP