():用于提升优先级,注意和数学区分,[(3+4)*2-6/2]*3->((3+4)2-6/2)3
真:true C99 非0(注意不是1)
假:false 0
逻辑谓词,!(非,注意和数学区分),&&(且),||(或)
!真->假;!假->真
表达式1&&表达式2:表达式都为真才为真
表达式1 || 表达式2 :表达式只要有一个为真就为真
位运算符:1字节=8位 位:二进制的位 所以位运算符都是针对二进制 假设整数占用1字节
12 0000 1100
13 0000 1101
~12 1111 0011 按位取反,0->1,1->0
~13 1111 0010
12&13 0000 1100 按位与,相同的位都为1才为1
12|13 0000 1101 按位或,相同的位只要有一个为1就为1
12^13 0000 0001 按位异或,相同的位不同就为1,难点 和数学区分
//例如.有一组数组,数字都成对,只有一个数字不成对,找到它
// 1 5 8 0 5 0 8 1 7 按位异或解决
12<<1 000 11000 按位左移,右边补0
24 = 122
12<<2 00 110000
48 = 124 左移相当于乘法,乘以2的n次方
12>>1 00000 110 按位右移,左边补符号位(无符号的数字补0,有符号数符号位为0则补0,为1则补1)
12/2=6
整数 : char,short,int ,long,long long (signed(有符号,默认)/unsigned(无符号))
无符号数:只能保存非负的数字
整数默认int 小数默认double
/ : 除法,整除:整数除以整数,结构为丢弃小数的整数
%:取余,得到余数(注意和数学区分)
<:小于,注意和数学区分 ,if(10>a>3) 考点
= =:等于符号,判断左右的值是否相同.易错点:将等号"==“写成”="
=:赋值,将右边的值赋值给左边
表达式1 ? 表达式2 : 表达式3 .如果表达式1为真则执行表达式2,为假则执行表达式3
int main()
{ printf("%d\n",sizeof(1));// 4 整数默认为int
printf("%d\n",sizeof(1.0));//8 小数默认为double
char c = 200;//-128~127
printf("%d\n",c);
int a = (int)12.5;//丢弃小数部分 ,消除警告
float b = 12.3;
int d = (int)pow(10,(double)5);//10^5;
printf("%d\n",d);
int i = 10;//定义一个整型变量i,赋值为10
int j = i+1;
i = 10;
j = ++i;//前置++,首先自增1,然后赋值
j = i++;//后置++,首先赋值,然后自增1
j = --i;//前置--,
j = i--;
printf("%d,%d\n",i,j);//
return 0;
int a = 20;//
a = 0x20;//十六进制的20
//a = 100000;//C语言不能直接使用二进制
printf("%d\n",a);
unsigned int c = 10;//无符号数:只能保存非负的数字
printf("%u\n",c);
c = -10;
printf("%u\n",c);
if(true)//真 如果
if(1)//真
if(2)//真
if("haha")//真
if(0.5)//真
if(0)//假
if(!false)
{
printf("真\n");
}
else//否则
{
printf("假\n");
}
int x = 5;
//if(x>3 && x<5)
if(x>3 || x<5)
{
printf("真\n");
}
else
{
printf("假\n");
}
return 0;
}