实例4:在计算数据类型所占内存大小时,可以使用 sizeof 操作数
🍥 sizeof不是函数,是操作符
🍥 sizeof计算的是类型创建变量的大小,单位是字节
//sizeof 操作符: #include <stdio.h> int main() { int a = 10; printf("%d\n", sizeof(a)); printf("%d\n", sizeof(int)); printf("%d\n", sizeof a); //printf("%d\n", sizeof int);//不允许这样计算,说明 sizeof 不是函数 return 0; }
实例5: ~
// ~ 按补码二进制位取反 #include<stdio.h> int main() { int a = 0; printf("%d\n", ~a); //00000000000000000000000000000000 //11111111111111111111111111111111 - 补码 //11111111111111111111111111111110 //10000000000000000000000000000001 -1 return 0; }
🍤 运行结果:
实例6:前置 ++ 、 后置 ++
//前置++:先对变量进行自增,然后使用该变量 int main() { int a = 1; int b = ++a;//前置++,先++,后使用 //a=a+1,b=a printf("a=%d b=%d\n", a, b);//2 2 return 0; }
🍤 运行结果:
//后置++:先对a先使用,再自增 #include<stdio.h> int main() { int a = 1; int b = a++;//后置++,先使用,后++ //b=a,a=a+1 printf("a=%d b=%d\n", a, b);//2 1 return 0; }
🍤 运行结果:
前置--、后置--等同
6.2 sizeof 和 数组
实例:
#include <stdio.h> void test1(int arr[]) { printf("%d\n", sizeof(arr));//(2) } void test2(char ch[]) { printf("%d\n", sizeof(ch));//(4) } int main() { int arr[10] = { 0 }; char ch[10] = { 0 }; printf("%d\n", sizeof(arr));//(1) printf("%d\n", sizeof(ch));//(3) test1(arr); test2(ch); return 0; }
🍤 运行结果:
7. 关系操作符
> >= < <= != 用于测试“不相等” == 用于测试“相等”
🍩编写过程中 == 和 = 不要写错
实例:判断闰年
#include<stdio.h> int main() { int y = 0; scanf("%d", &y); //1. 能被4整除,并且不能被100整除 //2. 能被400整除是闰年 if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) { printf("闰年\n"); } else { printf("不是闰年\n"); } return 0; }
8. 逻辑操作符
&& 逻辑与--并且 || 逻辑或--或者
1&2----->0 1&&2---->1 // & 两边二进制补码计算,相同为1,不同为0 // && 两边同为真,结果也是真,用 1 表示;只要有一个为假,结果就是假,用 0 表示 1|2----->3 1||2---->1 // | 两边二进制补码进行计算,只要有一个 1 就是 1;当两边都为 0 时,才是0 // || 两边只有一个真时,就为真;都是假时,才为假
实例1:
// && #include <stdio.h> int main() { int i = 0, a = 0, b = 2, c = 3, d = 4; i = a++ && ++b && d++; printf("a = %d b = %d c = %d d = %d\n", a, b, c, d); return 0; }
🍤 运行结果:
实例2:
// || #include <stdio.h> int main() { int i = 0, a = 0, b = 2, c = 3, d = 4; i = a++||++b||d++; printf("a = %d b = %d c = %d d = %d\n", a, b, c, d); return 0; }
🍤 运行结果:
9. 条件操作符
exp1 ? exp2 : exp3
实例:
//如果 a>5,则 b=3 //如果 a<=5,则 b=-3 if (a > 5) b = 3; else b = -3;
上述代码可以转换成条件表达式:
#include <stdio.h> int main() { int a ; scanf("%d", &a); int b = a > 5 ? 3 : -3; printf("%d\n", b); return 0; }
🍤 运行结果:
使用条件表达式实现找两个数中较大值
#include <stdio.h> int main() { int a, b ; scanf("%d %d", &a, &b); int c = a > b ? a : b; printf("%d\n", c); return 0; }