#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
//粗浅认识操作符
//1、算术操作符,+ - * / 。
//2、移位操作符 左移操作符: << ,右移操作符: >>。
//3、位操作符, 按位与 & ,按位或 | , 按位异或 ^。
//4、赋值操作符 = += -= *= /= &= |= ^= >>= <<=
//5、单目操作符 逻辑反操作 !,正值 + , 负值 - ,取地址 & , 操作数的类型长度(以字节为单位)sizeof ,对一个数的二进制按位取反 ~ ,前置、后置-- -- ,前置、后置++ ++ ,间接访问操作符(解引用操作符) * ,
//1、算术操作符
//int main()
//{
// int a = 9/2;//注意,在算术操作符中需要特别注意 / 除法操作符的运算,在取整形时,如果除不尽,会余数,转而输出余数前的整数,比如9/2=4余1,此时直接输出一个4.而不是输出4.5.
// float b = 9/2;//注意,哪怕是在单精度浮点数中进行除法运算,所得的结果也是9/2=4余1,输出的数为2.而不是9/2=4.5。除非是9/4.0才会输出等于2.5.除法运算只会根据所取的整形和数的精度来进行取值。
// float c = 9 / 2.0;
// printf("%d\n", a);//此处输出结果为4
// printf("%f\n" ,b);//此处输出结果为4.000000
// printf("%f\n", c);//此处输出结果为4.500000
// return 0;
//}
//移位操作符
// int main()
//{
// int a = 2;
// int b = a << 1;//左移操作符 << 将a=2的二进制操作符向左移动一位,
// //a在前面定义为整型,一个整形的长度为四个字节,一个字节长度为八个比特位,所以a的二进制操作符共4乘以8等于32位,而2的二进制表达为10,所以a的二进制操作符为:00000000000000000000000000000010,
// //而b = a<<1,所以b的二进制操作符为a的二进制操作符整体向前移动一位,此时最后一位空缺,自动填补为0,所以b的二进制操作符为:00000000000000000000000000000100,100的二进制转换为10进制为4.
// printf("%d\n", b);//所以此处的输出结果为 4,如果是左移,最后一位永远都补零,这是规定死的。
//
// return 0;
//}
//3、位操作符,认识一下就行,这个程序好像有点报警告。
//int main()
//{
// int a = 0;
// int b = 0;
// scanf("%d\n,%d\m", &a, &b);
// if (a > 10 | b < 11)
// {
// printf("20");
// }
// else
// {
// printf("30");
// }
// return 0;
//}
//4、赋值操作符
//int main()
//{
// int a = 0;
// a = a + 5;
// a += 5;
// a = a - 3;
// a -= 3;
// a = a % 3;
// a %= 3;
//
// //a = a + 5,a += 5 ,a = a - 3;a -= 3;a = a % 3;a %= 3;是一样的赋值。
//
// return 0;
//}
//5、单目操作符()
//int main()
//{
// //C语言中,0 表示为假,非0 就是真。
// int a = 3;
// printf("%d\n", !a);//a+b中,这个+加号有两个操作数,这叫双目操作符,!a只有一个操作数,叫做单目操作符,此处!a执行反操作,由于a=3>0为真,所以执行!a为假,输出数值为0.如果a=0为假,执行!a,则输出1。
// if (a)//!的正确用法,if(a)为真,则执行输出aaa,
// {
// printf("aaa");
// }
// if (!a)//if(a)为假,则执行输出bbb,
// {
// printf("bbb");
// }
// //因为a=3,所以输出为aaa。
// a = -5;//-5中的 - 在这里称为单目操作符负值。
// a = +5;//+5中的 + 在这里称为单目操作符正值。
// a = +a;//+a中的 + 在这里称为单目操作符正值。
//
// return 0;
//}
//sizeof前面课程有演示,这里再次演示一下。
int main()
{
//sizeof是一个操作符
// 不是一个函数,函数的括号是无法省略的。
//用来计算整形或变量的大小
//int a = 10;
//printf("%d\n", sizeof(int));
//printf("%d\n", sizeof (a));//求变量的时候此处的括号可以省略。
//10*4=40(数组内10个元素,每个元素是一个整形,一个整形是四个字节。)
int arr[10] = { 0 };
printf("%d\n", sizeof(arr));//计算的数组总大小。单位是字节。
printf("%d\n", sizeof(arr[0]));//4
int sz = sizeof(arr) / sizeof(arr[0]);//输出为10.
printf("%d\n", sz);
return 0;
}