免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: koolcoy
打印 上一主题 下一主题

C语言里面 1 ? "123" : "1234" 是一个非法的表达式 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2012-04-25 00:59 |只看该作者
回复 35# pmerofc


论坛徽章:
0
42 [报告]
发表于 2012-04-25 01:13 |只看该作者
koolcoy 发表于 2012-04-24 21:23
回复 22# pmerofc

C++里面?:是可以出左值的,我就以为C里面也可以~


x ? "12" : "1234" 在C++里面也是右值的。

An lvalue or rvalue of type “array ofN T” or “array of unknown bound of T” can be converted to an rvalue of type “pointer to T.”

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

论坛徽章:
0
44 [报告]
发表于 2012-04-25 10:38 |只看该作者
回复 43# pmerofc


    完全不像c,可能今天早就没c++了

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

论坛徽章:
0
46 [报告]
发表于 2012-04-25 10:49 |只看该作者
回复 45# pmerofc


C++之所以后来成功,很大程度依仗对C的兼容。

论坛徽章:
0
47 [报告]
发表于 2012-04-25 12:07 |只看该作者
回复 40# OwnWaterloo

不好意思,我确实没有看到你说的例外。

但是你说的例外并不成立,为了避免gcc默认使用c99。我使用c89编译
gcc -std=c89 -g -Wall test.c
一样的结果。

   

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
48 [报告]
发表于 2012-04-25 12:14 |只看该作者
回复 47# GFree_Wind

服了你了……  gcc -std=c89 你还真当是c89了?
幸好我原话里提到了,没有被当马后炮的嫌疑……
再看……  第2个重点我又标出来了……


OwnWaterloo 发表于 2012-04-24 18:18
sizeof的结果要求是个常量,(C99有例外,但只是对VLA相关的),而argc不是编译时常量。
如果sizeof( argc? "12": "6" )是 argc? sizeof("12"): sizeof("6"), 就无法成为编译时常量了。

所以,要么sizeof( argc? "12": "6" )非法(但msvc/gcc/clang都支持,即使有pedantic参数);要么它是sizeof( argc? (char*)"12": (char*)"6" )即sizeof(char*)的意思……

论坛徽章:
0
49 [报告]
发表于 2012-04-25 12:17 |只看该作者
回复 34# OwnWaterloo


在枚举上,C++确实已经做了很大改进。对于C来说,枚举不过是给程序员看的,其本质更像是宏。当然比宏要好用些。

确实C++在枚举上,可以走得更远些。像兄弟后来说的,枚举之间的大小判断本来就没有意义。对于这种没有意义的操作,C++完全可以抛出异常。

论坛徽章:
0
50 [报告]
发表于 2012-04-25 12:21 |只看该作者
本帖最后由 GFree_Wind 于 2012-04-25 12:24 编辑

回复 48# OwnWaterloo


呵呵,不服不行的。。。。
玩笑。

VLA——对这个真不知道具体是什么缩写。刚才google了一下,对照例子,应该是变长数组吧。

另外gcc -std=c89,为什么就不能当成c89呢?

唉。。。刚才看到了一些解释。。。原来GCC的c89还真不是标准的c89啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP