int a=b=1这样定义为什么是错误的

 我来答
kaixingui2012
2015-09-23 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6448万
展开全部
  • C语言中定义同一类型的多个变量必须以逗号分隔。如:

    int a,b,c ;

  • =在C语言中是赋值运算符,等号左边的变量,必须是已以定义好的变量才可以。

    int a=b=1 ; 中,若b已经定义,则是正确的。否则,b未定义,这样写就错了。如:

    int b; //少了这个定义,下面就不对了。

    int a=b=1 ; 

  • 如果想同时定义多个变量,并对变量初始化,则应该写成:

    int a=1, b=1; //中间以逗号分隔。

柳青藤
2011-02-25 · TA获得超过1141个赞
知道小有建树答主
回答量:65
采纳率:0%
帮助的人:100万
展开全部
因为机器是这样翻译的:先把1赋值给b,再把b赋值给a,中间的那个b,它认为是未定义的。
你可以这样写:int a,b;a=b=1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdkrr
2011-02-25 · TA获得超过354个赞
知道小有建树答主
回答量:355
采纳率:0%
帮助的人:344万
展开全部
这样只定义了a的类型为int

那么b是什么类型呢?编译器不知道。既然类型都不知道怎么可能把b的值赋给a呢?

可以这样写int a,b ;a=b=1;这样就没错了。

#include<stdio.h>

int main(void)
{
int a,b;
a=b=1;

printf("a=%d b=%d",a,b);

return 0;
}

给你个实例,自己琢磨。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
olive_pei
2011-02-25 · TA获得超过111个赞
知道答主
回答量:49
采纳率:0%
帮助的人:50.5万
展开全部
还没有定义b就对b进行赋值,编译器由于不能确定b的地址而无法认识b。先定义后赋值就不会出现问题了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-02-26
展开全部
在定义时,是不能连续赋值的,你可以在随后的语句中连续赋值,如 int a,b; a=b=1; 也可以int a=1,b=1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式