可以进行按位或(若有一个为真1,输出结果就为真),或上一个1
可以左移n个字符。
可以按位与,但如何获得按位与这个二进制数,需要将原来的二进制进行按位取反!
第一个输出结果为11,第二个10
输出结果40 10 4 4
第三个和第四个:因为数组在传参时,出的是第一个元素的地址,所以接受时,用指针变量进行接收,指针的大小是4/8个字节,所以输出结果要么4,要么8(具体看电脑配置)
逻辑操作符通常判断真或假。逻辑逻辑嘛!
输出结果就为假-------0
只要有一个为0假,输出结果就为假。
逻辑或,只要有一个为真,输出结果就为真---1,两个同时为假,输出才为假。
1 2 3 4
因为a++,先使用后加加,所以a=0,为假。、
逻辑或,只要左边为真,右边都不算!
首先在主函数外面创建一个结构体,结构体即为结构,所以只需要定义变量名,创建结构,注意结构体后面需要;!然后在主函数里进行初始化。
注意struct stu是一种变量,跟int、float类型一样,
初始化时,需要用到大括号{}
如果想要打印,使用s1,其中的某个变量,需要用到.点操作符
->结构体指针指向操作符
、、
TIP:二进制计算方法:逢二进一
需要将字符和短整型操作数进行转换,称为整型提升。
如何进行整型提升?
按照变量的数据类型的符号位进行提升
输出结果是-126
1、3为整型,在内存中存储4个字节,32个比特位000000000000000000000000000011
2、但被存储到了只有一个字节的char类型,所以被截断,只有8个比特位,00000011
3、同理,经过win+R,输出calculate,找到计算器,得出127的二进制数是01111111,也是占一个字节
4、在计算前应该进行整型提升,
5、在进行截断,此时c存储的是10000010.此时又要进行整型提升,按照高位的符号进行补位
6、我们在打印是原码,而存储的是补码,所以经过变换,得出结果-127
0x前缀表示是十六进制,a=10,b=11,c=12,d=13,e=14,f=15,因为是逢16进一,左移没有16,就像二进制没有2
只需将每一位的十六进制数转换为相应的4位二进制数
注意是4位。例如16进制的1转化为二进制就是0001
此题有==,表示有计算,所以需要整型提升
输出结果1 4 1
原因:+c表示计算,所以需要进行整型提升,变成4个字节
而 “!”是C语言中的非运算符,在变量前面使用它,会构建非运算表达式!所以结果还是1、
算数转换:
int表示最低一级,先转换为高级类型,再进行计算
注意: