int i=1,j=2,k=3;
if((i=j)==k)
......//执行语句
请详细的解释一下if((i=j)==k)这句的判断过程。
先谢了!
14 个解决方案
#1
i=j外面的第一个括号优先级最高,所以先是将j的值2赋给i;
然后判断i是否等于k,既是2是否等于3,是false,所以不会执行下面的......
这个 很简单啊
然后判断i是否等于k,既是2是否等于3,是false,所以不会执行下面的......
这个 很简单啊
#2
顺便问一句:标准C里面:
void main(){
int a=1;
printf("%d\n",a);
int b=2;
printf("%d\n",b);
}//报错
是不是所有的变量必须都在方法的最前面定义?执行语句过后就不允许了?
void main(){
int a=1;
printf("%d\n",a);
int b=2;
printf("%d\n",b);
}//报错
是不是所有的变量必须都在方法的最前面定义?执行语句过后就不允许了?
#3
if((i=j)==k)
先把j赋值给i,然后判断i==k
#4
如果是在C++中,可以使用这种方式;但是如果是纯C,则必须先声明变量。
#5
标准c是这样的,比如必须在main最开定义变量后面就不准许定义
#6
回2楼,在TC里是这样的,不过C++里就随便了,什么时候用什么时候定义都行。
强烈建议初学C的用VC6.0作为开发环境,比TC方便太多了,就连国二等级考试都改VC环境了。
强烈建议初学C的用VC6.0作为开发环境,比TC方便太多了,就连国二等级考试都改VC环境了。
#7
先进行括号里的赋值运算(i=j)
再进行比较运算()==k
变量的声明必须在 语句块开始
这两个应该都可以
再进行比较运算()==k
变量的声明必须在 语句块开始
void main(){
int a=1;
int b=2;
printf("%d\n",a);
printf("%d\n",b);
}
void main(){
int a=1;
printf("%d\n",a);
{
int b=2;
printf("%d\n",b);
}
}
这两个应该都可以
#8
首先执行赋值操作,将j的值赋给i,这样i的值就是2.
这样语句就简化为:
if(2 == k)
{
//dosomething
}
也就是拿k和2作比较
这样语句就简化为:
if(2 == k)
{
//dosomething
}
也就是拿k和2作比较
#9
回6楼:
我是在VC6.0里面写的,只不过保存的文件名是Test.c,而不是Test.cpp而已,那为什么还是不行?
我是学Java的,接触C不久,还请多指教
我是在VC6.0里面写的,只不过保存的文件名是Test.c,而不是Test.cpp而已,那为什么还是不行?
我是学Java的,接触C不久,还请多指教
#10
#include <stdio.h>
void main()
{
int i=1,j=2,k=3;
printf("%d",i=j);
printf("%d",(i=j)==k);
}
我写了个测试的小程序,楼主运行下就知道了。先赋值,然后再判断那个等号是否成立
#11
改成test.cpp编译肯定没问题
#12
.c就是按c标准编译的所以不能带C++特性,专心学c的就.c不要.cpp
.cpp的可以兼容c
#13
再turboc2.0下面才是.c文件,而再vc6.0下面,头文件是.h文件,而你的这种文件后缀名要写成.cpp文件。
其实,你在建立文件的时候完全可以不写后缀名,新建一种文件,你可以直接写名字,系统自动给你补全后缀名
至于(i=j)==k),其实,就是看运算顺序。先括号,i赋值j,然后判断i == K
#14
gcc下编译没问题
#1
i=j外面的第一个括号优先级最高,所以先是将j的值2赋给i;
然后判断i是否等于k,既是2是否等于3,是false,所以不会执行下面的......
这个 很简单啊
然后判断i是否等于k,既是2是否等于3,是false,所以不会执行下面的......
这个 很简单啊
#2
顺便问一句:标准C里面:
void main(){
int a=1;
printf("%d\n",a);
int b=2;
printf("%d\n",b);
}//报错
是不是所有的变量必须都在方法的最前面定义?执行语句过后就不允许了?
void main(){
int a=1;
printf("%d\n",a);
int b=2;
printf("%d\n",b);
}//报错
是不是所有的变量必须都在方法的最前面定义?执行语句过后就不允许了?
#3
if((i=j)==k)
先把j赋值给i,然后判断i==k
#4
如果是在C++中,可以使用这种方式;但是如果是纯C,则必须先声明变量。
#5
标准c是这样的,比如必须在main最开定义变量后面就不准许定义
#6
回2楼,在TC里是这样的,不过C++里就随便了,什么时候用什么时候定义都行。
强烈建议初学C的用VC6.0作为开发环境,比TC方便太多了,就连国二等级考试都改VC环境了。
强烈建议初学C的用VC6.0作为开发环境,比TC方便太多了,就连国二等级考试都改VC环境了。
#7
先进行括号里的赋值运算(i=j)
再进行比较运算()==k
变量的声明必须在 语句块开始
这两个应该都可以
再进行比较运算()==k
变量的声明必须在 语句块开始
void main(){
int a=1;
int b=2;
printf("%d\n",a);
printf("%d\n",b);
}
void main(){
int a=1;
printf("%d\n",a);
{
int b=2;
printf("%d\n",b);
}
}
这两个应该都可以
#8
首先执行赋值操作,将j的值赋给i,这样i的值就是2.
这样语句就简化为:
if(2 == k)
{
//dosomething
}
也就是拿k和2作比较
这样语句就简化为:
if(2 == k)
{
//dosomething
}
也就是拿k和2作比较
#9
回6楼:
我是在VC6.0里面写的,只不过保存的文件名是Test.c,而不是Test.cpp而已,那为什么还是不行?
我是学Java的,接触C不久,还请多指教
我是在VC6.0里面写的,只不过保存的文件名是Test.c,而不是Test.cpp而已,那为什么还是不行?
我是学Java的,接触C不久,还请多指教
#10
#include <stdio.h>
void main()
{
int i=1,j=2,k=3;
printf("%d",i=j);
printf("%d",(i=j)==k);
}
我写了个测试的小程序,楼主运行下就知道了。先赋值,然后再判断那个等号是否成立
#11
改成test.cpp编译肯定没问题
#12
.c就是按c标准编译的所以不能带C++特性,专心学c的就.c不要.cpp
.cpp的可以兼容c
#13
再turboc2.0下面才是.c文件,而再vc6.0下面,头文件是.h文件,而你的这种文件后缀名要写成.cpp文件。
其实,你在建立文件的时候完全可以不写后缀名,新建一种文件,你可以直接写名字,系统自动给你补全后缀名
至于(i=j)==k),其实,就是看运算顺序。先括号,i赋值j,然后判断i == K
#14
gcc下编译没问题