#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 9 / 2;
float b = 9 / 2;
printf("%d\n", a); //结果为4
printf("%f\n", b); //结果为4
//想要打印出4.5的方法把除数用用浮点型即可,例:
float c = 9 / 2.0;
printf("%f\n", c);
int d = 9 % 2;
printf("%d\n", d); //结果为1,%的意思是9除2的余数,读为9模(余)2。
int num1 = 2;
int num2 = num1 << 1;
int num3 = num1 >> 1; //右移操作符同理
printf("%d\n", num2); //结果为4,<<左移的是二进制的操作符,左移的剩余位置用0替代,由10 (2) -- 100 (4),
printf("%d\n", num3);
位操作符:
& 按位与
| 按位或
^ 按位异或
两个a的表达相同:
a = a + 5;
a += 5;
//C语言中:0表示假的,1表示真的
int A = 10;
printf("%d\n", !A); //!表示逻辑取反,即假的变真,真的变假
//正常用的方法:
if (a)
{
//如果a为真,做事
}
if (!a)
{
//如果a为假,做事
}
//sizeof是操作符
//计算类型或者变量大小的
int B = 10; //单位都为字节
printf("%d\n", sizeof(int)); //结果为4
printf("%d\n", sizeof(B)); //结果为4
int arr[10] = { 0 };
printf("%d\n", sizeof(arr)); //结果为40,10个整数,即4*10
printf("%d\n", sizeof(arr[0])); //结果为4
int sz = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", sz); //结果为10,40/4
return 0;
}
int main()
{
//~是按位取反,按位取反是全部都取反(包括符号位)
int a = 0;
printf("%d\n", ~a); //打印的是-1
按(二进制)位取反,把所有的0变成1,1变成0
0的二进制是00000000000000000000000000000000 a
11111111111111111111111111111111 ~a
一个整数的二进制表示有三种:
负数的计算: (-1) 正数的计算:源码,反码,补码相同
10000000000000000000000000000001(源码)
11111111111111111111111111111110(反码) //源码到反码是符号位不变,其他位按位取反
11111111111111111111111111111111(补码) //补码是反码 +1
计算机在内存存储的是补码,第一个是符号位
int num1 = 10;
int num2 = ++num1; //先++,后使用 //num1++是先使用,再++
printf("%d\n", num2);//11 //10
printf("%d\n", num1);//11 //11
return 0;
}
int main()
{
//&&逻辑与
//
int A = 10;
int B = 5;
int C = A && B;//(两个都要满足)
int D = A || B;//(只要满足一个)
printf("%d\n", C);
exp1 ? exp2 : exp3;
exp1成立,exp2计算,那么exp2为整个表达式的结果
exp1不成立,exp3计算,那么exp3为整个表达式的结果
例子:
int a = 0;
int b = 3;
int MAX = 0;
/*if (a > b)
{
MAX = a;
}
else
{
MAX = b;
}*/
MAX = a > b ? a : b; //条件操作符
printf("%d\n", MAX);
//逗号表达式:
int num1 = 5;
int num2 = 2;
int num3 = 4;
int num4 = (num1 = num1 + 2, num2 = num1 - 4, num3 = num2 + 4); //从左到右开始计算,最后结果为num3的结果
printf("%d\n", num3);
return 0;
}