任何表达式都是右值,不能作为 右值来使用。
(i+=j)+=k; i+=j 返回的是一个复制 不是i,是个匿名变量(在c语言中是。 在c++中是返回的i)
不能除以0(浮点数出错,核心已转移),但是可以用浮点数来除(inf 无穷大的一个数),
%两边不能是float 或double
i=1; j=i++ + ++i + ++i; 不同编译器的结果不一样 (GNU中 先计算第一个+号两边的数,再对第三个数加) i=4,j=7
fabs 去绝对值 是float double fabs(double x); float fabs(float x); long double fabs(long double x); abs 是计算int 型的绝对值, labs 是long型
• 短路与:若第一个表达式为假,则结果为假,后面
的表达式不再计算
10<1&&(n=5); printf("n=%d\n",n); n=5
• 短路或:若第一个表达式为真,则结果为真,后面
的表达式不再计算
10>1||(n=5); printf("n=%d\n",n); n=0
printf("%d\n",(a=3,++b,c--,a+=10)); //13 以逗号表达式的最后一个作为输出的值,
%p用来打印地址
c=a^b; c^a==b 或 c^b==a
(i+=j)+=k; i+=j 返回的是一个复制 不是i,是个匿名变量(在c语言中是。 在c++中是返回的i)
不能除以0(浮点数出错,核心已转移),但是可以用浮点数来除(inf 无穷大的一个数),
%两边不能是float 或double
i=1; j=i++ + ++i + ++i; 不同编译器的结果不一样 (GNU中 先计算第一个+号两边的数,再对第三个数加) i=4,j=7
fabs 去绝对值 是float double fabs(double x); float fabs(float x); long double fabs(long double x); abs 是计算int 型的绝对值, labs 是long型
• 短路与:若第一个表达式为假,则结果为假,后面
的表达式不再计算
10<1&&(n=5); printf("n=%d\n",n); n=5
• 短路或:若第一个表达式为真,则结果为真,后面
的表达式不再计算
10>1||(n=5); printf("n=%d\n",n); n=0
printf("%d\n",(a=3,++b,c--,a+=10)); //13 以逗号表达式的最后一个作为输出的值,
%p用来打印地址
c=a^b; c^a==b 或 c^b==a