C语言中非语句的表达式会执行实际操作吗?
今天看谭版《C语言程序设计》(第三版)第3章和第4章关于表达式和语句的部分。突然想到了这么一个问题,那就是纯粹的赋值表达式,而不是加了;的赋值语句是否会产生实际的操作呢。于是写下了如下段代码放GCC编译器上测试,最终的结果是产生了实际操作。不是说C语言是用语句来向计算机发出操作指令的吗?不解!!!希望大家能帮我解疑释惑!!!#include<stdio.h>
int main()
{
int a,b,t;
a=2,b=3;
if((a=b)>0) t=a;
printf("a=%d, t=%d\n",a,t);
}
结果为:
a=6, t=6
这里面if条件表达式里面a=b就是一个赋值表达式,虽然不是一个赋值语句,但是它产生了实际的操作,让a=6。