一、C语言基础知识
x=023为八进制,需要将其转换为十进制,2*(8的1次方)+3*(8的0次方)=19;--19,先减再输出。
首先,这个表达式中含有赋值运算符和逗号运算符,由于赋值运算符的优先级别高于逗号运算符,因此表达式d=1,d+5,d++为三个表达式:1)d=1 2)d+5 3) d++
再次,逗号表达式的求解过程是:先求解表达式1,再求解表达式2,再求表达式3,整个逗号表达式的值是表达式3的值。因此整个表达式的值是1.0
(x,y)即(100,200)是逗号表达式,取末项的值200。
从右向左算
首先a的值是12
第一步:
计算a*=a
a=a*a=144
第二步:
计算a-=144
a=a-144=0
第三步:
计算a+=0
a=a+0=0
2.5+7%3*(int)(2.5+4.7)%2/4 ->计算(x+y)
=2.5+7%3*(int)(7.2)%2/4 ->计算(int)(7.2)强制类型转换=7
=2.5+7%3*7%2/4 ->计算求余7%3=1
=2.5+1*7%2/4 ->计算1*7=7
=2.5+7%2/4 ->计算求余7%2=1
=2.5+1/4 ->计算1/4=0(整数除整数,结果还是整数,0.25成了0)
=2.5+0
=2.5
char 类型其实也可以看作整数,此处可以看作ascii码只,也可以看作整数,不过范围比较小
w * x 返回数据类型为 int
w * x + z,因为z为double类型, 将w * x的类型隐式转换为double类型与z计算
w * x+z-y y是float类型 运算级别double大于float 相当于double-double类型的
所以最后整体返回数据类型为 double
其实考察的就是对数据类型运算级别的理解,级别由低向高转换。
二、选择结构程序设计
c/100%9从右往左计算,
246/100=2(因为a为整型)——> 2%9=2(被除数比除数小,余数取被除数)
(-1)&&(-1)=1,因为-1非0为真,所以结果为1,1&&1为真结果为1
!
是逻辑非运算符
在C语言中,!
是逻辑非运算符(logical NOT operator)。它用于对布尔表达式进行取反操作。如果布尔表达式为真(非零),使用 !
运算符后结果为假(零);如果布尔表达式为假(零),使用 !
运算符后结果为真(非零)。
下面是一个简单的示例:
#include <stdio.h>
int main() {
int a = 5;
int b = 0;
if (!b) {
printf("b 的值为假 (0)\n");
}
if (!a) {
printf("a 的值为假 (0)\n");
} else {
printf("a 的值为真 (非零)\n");
}
return 0;
}
在这个例子中,!b
的结果为真,因为 b
的值是 0
。而 !a
的结果为假,因为 a
的值是 5
(非零)。因此,程序将输出:
b 的值为假 (0)
a 的值为真 (非零)
总结来说,!
用于判断一个条件是否为假,并返回相应的布尔值。