当前位置:首页 » 编程语言 » c语言或表达式不执行
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言或表达式不执行

发布时间: 2022-05-27 20:06:04

c语言中为什么常量和表达式不能进行自增自减运算

首先说表达式,我们要知道自增和自减的原理,从表象上看自增自减对一个变量的值进行+1或-1操作。但是深入到底层的实现原理,这两个操作其实是对固定的内存地址内的值进行+1或-1。所以要能够自增自减首先就要满足有固定的内存地址,而对于表达式来说,最终表达式计算得到的结果如果不赋值给变量的话是没有固定内存地址记录这个值的。

再来说常量,虽然常量是有分配固定内存地址,但是常量的意义就是指‘不变化的量’,所以说这是类型限定了常量是不能被改变的,如果能变,那就不是常量了。

② c语言。。||是符号或,优先级是从左到右判断。为什么如果第一个语句为真则结果为真,不执行第二个语句

这是C语言,以及基本上所有常见的语言的“短路”逻辑,一旦一个表达式判定出肯定为真或者假,就不会继续后面的判断。这种特性很有用,比如你有一个判断:
if (A || f(xxx)) {
}
其中A为真的可能性非常大,那么f函数的调用次数就减少了,如果f函数是一个比较耗费资源的操作,就会给整个表达式节省出很多时间提高一定的效率;有时f函数有可能会有一些副作用,比如改变全局变量之类的,在A为真的情况下不应该调用f,让f函数的副作用起作用,这个时候有“短路”就非常有用了。

③ c语言数据结构栈,后缀表达式转中缀表达式,代码不能执行

网上说的都比较麻烦,其实很简单:首先你要知道一点就是中缀转为后缀时操作数的顺序是不会变的。另外“(”也不会出现在后缀表达式中。然后,你可以这样看,在这个表达式中,按照运算法则,应该先算(-B)(这里你的表达式里应该是少了个括号),所以就是“B-”在一起,然后再把(-B)的结果乘以A,就变成了AB-*(因为是A*(-B),所以A在B前,而“*”在“-”的后面),然后将上面的结果+C,同样的道理分析,自然就是:AB-*C+了。(注:因为C是在AB的后面,所以C在*的后面)如果中缀表达式是:C+A*(-B),则后缀表达式即为:CAB-*+。希望你能理解!!!同样的例子,请参见:?oldq=1

④ C语言逗号运算符前的表达式运不运行

逗号表达式是从左往右执行,最后那个式子的结果才是逗号表达式的结果,前面的执行是有效的。

⑤ C语言,请问这个表达式为什么说是无效的

因为赋值运算符的优先级更低,所以原式等价于:
if(spTemps = (fopen ("TEMPS.DAT",“w”) == NULL));
结果就相当于给文件指针赋一个逻辑值,所以说,是无效的。
应该是这样:
if((spTemps = (fopen ("TEMPS.DAT",“w”)) == NULL)........;

⑥ C语言的题,逻辑或前面不假的话,后面的就不会执行么

是的,这个叫"短路",因为逻辑或的话,两边有一个为真那么整个表达式的值为真,既然前面的为真,那么后面的就不用计算了,整个表达式必为真。

⑦ c语言,对于for嵌套switch语句,break不执行表达式3而continue执行表达式3对吗

break是结束,整个儿放循环,在当前位置直接跳出for循环。而continue是结束本次循环,接着执行下一个循环。也就是在continue和break在本次循环后面的语句都不会执行。

⑧ c语言:while(表达式)如果表达式位0.876非零为何不执行循环语句K++。

你定义的y是整型,因此将绝对值的结果强制取整。即:
y=fabs(x[0])=fabs(123.45)=123
y=fabs(x[1])=fabs(-34.72)=34
y=fabs(x[2])=fabs(0.876)=0
y=fabs(x[3])=fabs(-765.3)=765
看到了吧,x[2]=0.876,y=0,不满足y不等于0的条件,k当然不进行自加了。

⑨ C语言中,逻辑表达式是一个赋值语句时候是真还是假while(*t=*s){t++;s++}什么时候执行不执行

每个数据都对应一个地址

当地址t和地址s内的数相等时执行

地址t和地址s加1继续比较直到不相等为止

比如

执行完后t=102s=88

⑩ C语言中的或者||怎么不能用

能用,他只是当a为0是才结束程序的运行。在把你输入的所有数中的最大者输出。