C语言中if条件问题

# include <stdio.h>

int main()
{
int a=1;

if(a++==0);

}
在这,if里面的条件无论在什么编译器下面运行if里面的a++都会执行吗?或者说a都会执行自增吗?

编译原理我没有学过,所以可能无法完美的回答你的问题,但我给出我的想法,供你参考。
首先你要知道IF()的那个括号里面放的是什么,它放的是一个表达式,而且是一个可以判断真假的表达式。那什么是表达式呢?也话你觉得这个问题不难回答,但实际上表达式的内容是很宽泛的,包括算术表达式、关系表达式、逻辑表达式、赋值表达式、条件表达式、逗号表达式等等几种。那么回过头来,IF语句的那个括号里面放的就是个逻辑表达式。现在再说a++,根据ANSI的规定,其自增运算是在表达式结果计算完成之后再进行的,比如你的例子,它是先判断a==0是真是假,结果是FALSE,然后再自增。你写的例子的执行过程也必需是这样的。值得注意的是逗号表达式,它就因编译器的不同得到不同的结果,了解即可。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-27
不是,有两种编译器,一种的a++在判断a==0后自加,一种是先自加再判断,vc和vs的编译器就有点不一样
第2个回答  2013-09-27
程序的执行结果和编译器没多大关系的。a++都会执行。追问

就算里面条件为假,不管什么编译器都会将a进行自加吗?

追答

对呀,判断结束后a就执行++

本回答被提问者采纳
第3个回答  2013-09-27
我理解你的意思是想问是不是编译器在编译的时候会进行优化,去掉不会执行和无意义的语句,如果 是if(a ==0);这样的语句肯定会被编译器编译时直接去掉,想你那种语句,很可能被优化为 a++;
但这和具体的编译器有关
第4个回答  2013-09-27
是的,这是语言特性,与编译器没有关系。

C 中的If语句条件部分能否用=号,如果可以那是代表什么呢?新手求解没...
在C语言中,若要使用等号(=)作为条件判断的一部分,其形式为 if(a = b c)。此表达式首先会计算括号内的表达式(b c),得到其结果并将其赋值给变量a。然后,C语言会判断a的值是否非零。如果a的值非零,即a不等于零,则条件为真,if语句的执行路径将被选取。相反,如果a的值等于零,即a等...

C语言中if()函数的几个用法?
if (条件1) { \/\/ 如果条件1为真,则执行的代码} else if (条件2) { \/\/ 如果条件1为假且条件2为真,则执行的代码} else { \/\/ 如果条件1和条件2都为假,则执行的代码}嵌套 if 语句:if (条件1) { \/\/ 如果条件1为真,则执行以下代码if (条件2) { \/\/ 如果条件1为...

c语言if条件是或语句第一个条件满足了还会运行第二个吗
会。在C语言中,if语句的逻辑是“条件为真,则执行接下来的代码块”。第一个条件为真,那么第一个代码块会被执行。因此第二个条件为真,那么第二个代码块会被执行。

c语言什么情况if后面用两个等号
在C语言中,if语句的条件表达式中使用两个等号(==)表示相等比较运算符。当使用if语句时,条件表达式需要返回一个布尔值(true或false)。通过使用相等比较运算符,可以判断条件表达式的两个操作数是否相等,如果相等则条件表达式的结果为true,执行if语句中的代码块。下面是一个示例代码:```cint x = ...

C语言中的if判断问题?
if(){} 这条语句的意思是 如果if后面括号内的表达式结果为真,则执行后面大括号内的语句!if(t) { }表示如果t为真 这执行后面{}内的语句if(!t) { } 在t前面加个“!”符号,表示“非t”的意思,就是t如果为真 则“非t”为假 t如果为假 则“非t”为真 ...

求c语言高手指点关于if函数的问题
这个问题有点意思。说实话,第一种写法是不被推荐的,因为第一个 if 的括号里面的意思是:先运算 a > 0 ,再运算 b > 0 ,最后取 b > 0 的值(真或假,即非0或0)作为 if 的判断条件。逗号也是 C 语言中的运算符,在 C 语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值...

在C语言中if(表达式)语句是怎么回事?
if(表达式)语句 如果表达式的值为非0,则执行语句1,否则跳过语句继续执行下面的语句。如果语句1有多于一条语句要执行时,必须使用{和}把这些语句包括在其中,此时条件语句形式为:if(表达式) { 语句体1; } 例如: f(x>=0)y=x; f(a||b&&c) z=a+b; C+=Z;...

C语言的if条件一个问题
在C中,if(d=1)的语法实质是if((d=1)!=0)的略写,因为d=1时(d=1)!=0肯定成立,所以要执行后面的printf语句;而如果写成if(d=0),显然if((d=0)!=0)不成立,所以不执行后面的printf语句。

c语言的if判断问题,需要大家帮助
首先:变量应先定义后使用 其次:是你判断的条件出现问题:p是从0~趋近100的浮点数,而在条件中:例如 (k > P2 && p <= P3)中:p要满足条件那么这个几率就非常之小。这就是导致你(变量k在if之前正常,就是无法输出)的问题。。。

c语言中if后面没有分号为什么会这样啊?
在C语言中,if语句的语法结构是这样的:注意到在if语句的条件后面是用括号括起来的,而不是分号。这是因为if语句是一种控制流语句,用于根据条件的真假来决定是否执行特定的代码块。如果在if语句的条件后面加上分号,就会被解释为一个空语句,相当于没有任何操作。举个例子,如果你写了这样的代码:实际...

相似回答