“int i=1,float j=2”与“int i=1;float j=2”有什么区别

sqw314 2011-05-25 05:05:42
“int i=1,float j=2”与“int i=1;float j=2”有什么区别
...全文
297 26 打赏 收藏 举报
写回复
26 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
天外来客-007 2011-05-27
定义的一行,不能用逗号表达式连接两个不同的类型,建议使用第二种写法!
  • 打赏
  • 举报
回复
wxin 2011-05-27
应该是同类型的才写在一起
  • 打赏
  • 举报
回复
平常心006 2011-05-27
第一种是错误的写法,至少通不过vs 2005的编译器。
第二种才是正确的写法。
  • 打赏
  • 举报
回复
Louistao 2011-05-26
建议楼主理解下 逗号和分号的区别
  • 打赏
  • 举报
回复
fellatioyzx 2011-05-26
第一个在C98标准下应该是能过的吧,返回最后一个表达式得到的值。
微软的VS从2003后好像就变得严格了。
估计这个在VS6.0或者老版的gcc里都能过
  • 打赏
  • 举报
回复
guanzhouxuezi 2011-05-26
第一种在VC6.0下可以通过编译,在code::blocks下不能编译。建议使用第二种
  • 打赏
  • 举报
回复
kevin626521 2011-05-26
果断使用第二种,不解释。
  • 打赏
  • 举报
回复
LBJMD 2011-05-26
介个问题需要纠结吗,没想过你说的这个问题。
  • 打赏
  • 举报
回复
finalcheatss 2011-05-26
第一种写法不能通过编译吧?
  • 打赏
  • 举报
回复
lghhao123456 2011-05-26
果断采用第二种。
个人觉得,第一种写法虽然在VC6.0下编译通过了,但未必在其他编译器可行,可移植性不好。
等待高手详解。
  • 打赏
  • 举报
回复
std_call 2011-05-26
LZ,第一句根本就运行不通过。第二句还算正确。
定义以及初始化多个变量必须是同一类型的好么。
  • 打赏
  • 举报
回复
ww884203 2011-05-25
第二种才是对的啊
  • 打赏
  • 举报
回复
Bill_Hoo 2011-05-25
[Quote=引用 12 楼 bl520025 的回复:]

编译的时候有2个警告
warning C4518: 'float ' : storage-class or type specifier(s) unexpected here;ignored warning C4228: nonstandard extension used : qualifiers after comma in declarator list are ignored
建议还……
[/Quote]
直接忽略float了?
那你用typeid测测,VS08直接报错的
  • 打赏
  • 举报
回复
Bill_Hoo 2011-05-25
一个定义中怎么能出现两个类型呢?
VC6.0通过了还真不能理解
逗号表达式哪有这样用的...
表示不解
  • 打赏
  • 举报
回复
HBack 2011-05-25
编译的时候有2个警告
warning C4518: 'float ' : storage-class or type specifier(s) unexpected here;ignored warning C4228: nonstandard extension used : qualifiers after comma in declarator list are ignored
建议还是使用第二种
等待高人详细解答......
  • 打赏
  • 举报
回复
阿尔博特 2011-05-25
[Quote=引用 1 楼 namelij 的回复:]

一般都建议用第二种,为了方便区别

至于第一种,貌似不可以运行吧,我就见过 int i=1, j=2;这种,可能我out了吧
[/Quote]
第一个无法运行
  • 打赏
  • 举报
回复
xiaoguangzaia 2011-05-25
第一种我在vc6.0下还真编译通过了 - -

就是逗号表达式。逗号表达式会从左向右依次执行,如果要返回值最后会返回最右边的值。
一般在for语句里会看到逗号表达式:
for(int x,x=0;;)
这样就是定义了一个x并初始化为0。

像楼主这样只是定义的话我试了试貌似两种没区别啊,就是定义了两个变量。
只是不知道别的地方第一种情况能编译过不
  • 打赏
  • 举报
回复
purewqk 2011-05-25
明显编译不通过...
  • 打赏
  • 举报
回复
int i=1,float j=2;
这个能过编译?
  • 打赏
  • 举报
回复
My_Love 2011-05-25
区别就是一个错的,一个正确
  • 打赏
  • 举报
回复
加载更多回复(6)
发帖
C++ 语言

6.2w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2011-05-25 05:05
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下