#include <stdio.h>
int main()
{
int a = 0;
int x = 0;
int y = 0;
a = x = y + 1;
//这是连续赋值,其顺序是先从右向左。先y+1赋予x,再x赋予a。
//不过,最好不用,能拆开就拆开,这样能看的更清晰,分析的是时候也方便
//还有复合赋值:
//+=,-=,/=,*=,%=,>>=,<<=,&=,^=,|=
//单目操作符(即只有一个操作数):
//"!"逻辑反操作,"-"负值,"+"正值,"&"取地址,
//"sizeof"求所占空间大小的(单位字节),
//"~"对一个数的二进制按位取反(把所有位都取反),
//"--"前置、后置--,"++"前置、后置++
//"*"间接访问操作符(解引用操作符)
//"(类型)"强制类型转换
//其中"&"为双目操作符时是按位与运算
return 0;
}
#include <stdio.h>
int main()
{
int a = 13;
//00000000000000000000000000001101 是13的二进制数
//要求变成00000000000000000000000000011101 是29的二进制数
//只是把一位0变成了1,那么就只需要或上00000000000000000000000000010000
//而00000000000000000000000000010000就用1<<4
a = a | (1 << 4);
printf("a = %d\n", a);
//要是在想把a换回去
//00000000000000000000000000011101就需要与上11111111111111111111111111011111
//1111111111111111111111111101111 就需要用"~(1<<4)"
a = a & ~(1 << 4);
printf("a = %d\n", a);
//要灵活运用按位&、|、^这三个运算
//按位与"&"和按位或"|",是把二进制每个位进行与/或运算的
//而逻辑与"&&"和逻辑或"||",则是通过,有0出0(有1出1)这种,来判断条件是真或者是假的
return 0;
}
#include <stdio.h>
int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ && ++b && d++;
//逻辑与(&&),有个毛病,就是若"a&&b"中先算出a(左侧)是0,后面的就不执行了,
//既然不执行了,那么相应的数值就不会改变了。若是1的话就继续执行下去。
printf("a = %d ,b = %d ,c = %d ,d = %d ", a, b, c, d);
//所以,打印的结果就是:1 2 3 4(注意a变了,因为先入"a++"这一条时,还没有出0)
/*
i = a++ || ++b || d++;
逻辑或(||),也有个毛病,就是若"a||b"中先算出a(左侧)是1,后面的就不执行了,
既然不执行了,那么相应的数值就不会改变了。若是0的话就继续执行下。
printf("a = %d ,b = %d ,c = %d ,d = %d ", a, b, c, d);
所以,打印的结果就是:1 2 3 4(注意a变了,因为先入"a++"这一条时,还没有出1)
*/
return 0;
}
#include <stdio.h>
int main()
{
int a = 10;
int b = a++;//后置++,是先使用a,然后a再自己加加
printf("a=%d\n", a);//输出是11
printf("b=%d\n", b);//输出是10
b = ++a;//前置++,是先a自己加加,再使用a
printf("a=%d\n", a);//输出是12
printf("b=%d\n", b);//输出是12
printf("a=%d\n", a++);
//后置++,是先使用a,然后a再自己加加,所以输出是12
printf("a=%d\n", a);
//输出是13
//“--”是同样的道理
return 0;
}
#include <stdio.h>
int main()
{
int a = 10;
printf("%p\n", &a);//&是取地址操作符,%p是打印地址
int* pa = &a;
//int* pa中的*,表示pa是一个指针变量,指针变量是用来存放地址的。
//而pa指向的对象是a,所以存放的是a的地址。又因为a的类型是int,所以int* pa。
//*pa中的*又叫解引用操作符或叫间接访问操作符
//*pa就是通过pa里的地址找到其所指向的对象,所以*pa就是a
//指针变量的大小不是4个字节就是8个字节,32为就是4,64为就是8
*pa = 20;
printf("%d\n", a);
return 0;
}