//下面是对移位操作符的学习
//移位操作符——移的是二进制位。
//<<表示 左移
//>>表示 右移
//简单举个例子进行理解
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS 1
//int main()
//{
// int a = 3;// 整形3 一个占用 4字节的空间,也就是32个bit位。
// //整数3用2进制表示为“011”
// //在内存中,显示为“00000000000000000000000000000011”
// int b = a << 2;/*表示将a在内存中所储存的2进制整体向左平移2个bit位,多出的部分去掉,缺少的部分*/
// //则用0补齐,最终结果为“00000000000000000000000000001100”——即十进制的12。
// printf("%d\n",b);/*对结果进行验证----b的值为12,正确。*/
// /*那么变量a的值经过移位操作符进行操作后,是否有发生变化呢?打印变量a,查看结果。*/
// printf("%d\n",a);/*发现a的值打印结果为3,并未发生变化。——类似于进行了4则运算(猜想)*/
//
// return 0;
//}
//下面继续学习符号“%”,读作“模”,意思与数学上的除数求余差不多。
//例如:
//int main()
//{
// int a = 5 % 2;/*意为求 5/2的余数,用变量a接走这个余数,结果很明显是1。*/
// printf("%d\n",a);
// return 0;
//}
//接下来,是对“&,|,^”三个符号的学习;
//&——之前在scanf函数中遇到过,这次学习它的另一个身份。“按位与”--意思就是数学中p^q的意思,
//1假全假,2真才真(其中,非0表示真,0表示假)
//“|”——按位或,数学中的p v q,一真全真,两假全假
//
//“^”——按位异或,长得很像幂方,但不是。我是按字面意思理解的,两者相异时,为或关系,
//因为两者相异,必有一0一1,此时按照或关系处理,得到的值为1,而2者相同时反之。。。。
//下面,用一个简单例子进行测试
//int main()
//{
// int a = 7;/*7用2进制表示为“0111”*/
// int b =11;/*用2进制表示为“1011”,那么根据上面的规则,预测结果应该为“1100”,转化为10进制为12*/
// int c = a ^ b;
// printf("%d\n",c);
// return 0;
//}
//接下来学习单目操作符“sizeof”意为 操作数的类型长度(以字节为单位)。
//int main()
//{
//
// int arr[10] = { 0 };//先建立一个大小为10的数组
// int a = 0;
// printf("%d\n", sizeof(a));
// printf("%d\n", sizeof(int));//通过打印得知“a”,“int” 大小均为4。
// printf("%d\n", sizeof(arr));//打印数组的大小,根据数组含有10个整数,猜测大小为40。
// /*那么我们在得知数组大小的情况下,如何得知数组的元素个数呢 ?*/
// return 0;
//}
//int main()
//{
// int szys = 0;/*先设置一个变量,待命用于存储数组元素个数*/
// int arr[10] = { 0 };//建立一个大小为10的数组
// printf("%d\n", sizeof(arr));
// printf("%d\n", sizeof(arr[4]));//打印数组中下标为4的元素的大小。
// szys = sizeof(arr) / sizeof(arr[4]);//数组元素个数=数组总大小/单个元素大小
// printf("数组元素个数为:%d\n",szys);
// return 0;
//}
//今天的最后一个知识点:单目操作符中的逻辑反操作符号----"!",将非0变为0,将0变为1。
//已知c语言中,真为非0,假为0
//int main()
//{
// int a = 3;
// printf("%d\n",a);//打印值为3
// printf("%d\n",!a);//打印值为0
// return 0;
//}
int main()
{
int a = 0;
printf("%d\n", a);//打印值为0
printf("%d\n", !a);//打印值为1
return 0;
}
that all
今天的学习到此为止了。。