一、关于规范化代码问题 提高代码的可移植性:找vs文件安装路径,commom/idevc/vcprojectltems再找newc++file文件修改
二、常量变量:字面常量;
const-常属性 让变量变成常变量(本质还是变量只是不变);
#define定义的标识符常量
枚举常量 一一列举 枚举关键--enum main函数里面要定义个新的变量;
枚举常量不能改 且从上到下自0开始
三、字符串:由双引号引起来的一串字符成为字符串字面值,简称字符串。技术标志是一个\0的转义字符,在计算字符串长度的时候算结束标志不算内容。
strlen-string length-就散字符串长度的(没有\0的得到的会是随机值)
四、转义字符:转变原来的意思
\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\ddd ddd表示1-3个八进制的数字。如\130X 如\32 -》十进制为26 对应的ASCII码值代表字符
\xdd dd表示2个十六进制数字。如\x30 0
\0 ASCII码值-数字0 ‘0’字符0 -48
五、注释:/*C语言的注释风格(缺点是不能嵌套注释 不管前面几个/*只要遇到一个*/就会停止)
//c++的注释风格但是C语言也可以用
vs ctrl+k+c ctrl+k+u
六、选择语句:如果就
七、循环语句:有些事必须一直做
while循环
for
do while
八、函数
库函数
自定义函数
九、数组
下标的方式访问元素 arr[下标]
数组是一组相同类型元素的集合
数组的下标是从0开始
数组如果初始化,可以不指定数组的大小
数组的定义括号内需要为常量
数组名本质上是一个地址
十、操作符
算数操作符:+ - * / %(取模)
移(2进制)位操作符:>>右移 <<左移
0001 0010 0000
左移右自身移值不变
(二进制)位操作符:&(按位与) ^(按位异或) |(按位或)
a=3;b=5;
011 101
c=a&b =001(0真1假)
a^b=110 异或的计算规律:对应的二进制位相同,则为0,对应的二进制为相异则为1
a|b=111
赋值操作符:= 赋值 ==判断相等
a+=10 等价于a=a+10
-= *= ^= &= /=|= >>= <<=
复合赋值符
单(双、三)目操作符:一/二/三个操作数
单目操作符:
! 逻辑反操作 a !a
- 负值
+ 正值(一般忽略)
& 取地址
sizeof :
操作数的类型长度(以字节为单位)计算的是变量(可以不加括号)/类型所占空间的大小
计算数组的元素个数:个数=数组总大小/每个元素的大小
sizeof(arr)/sizeof(arr[0]);
~ 对一个数的二进制按位取反
1010->>0101
int a=0;//4个字节 32bit位
int b=~a;//b是有符号的整形
第一位为符号位0为正1为负-> 0000000000000000000000000000000
111111111111111111111111111111111111
11111111111111111111111111111111110
1000000000000000000000000000001 由于正的有符号,整数取反必定是负数,二负数在内存中存储的时候存储的是二进制的补码,而打印是打印一个数的原码,所以要把补码转化为原码再打印出来
printf("%d\n",b)//使用的,打印的是这个数的原码
-- 前置、后置--
++ 前置、后置++
int a=10;
int b=a++;//后置++,先使用,再++:b=10 a=11
int b=++a;//前置++,先++,再使用;b=11,a=11
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
int a=(int)3.14--->>让double转换为int
关系操作符:
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
逻辑操作符:
&& 逻辑与->并且
int a=3,b=5;
int c=a&&b=1
|| 逻辑或->
条件操作符:
exp1 ? exp2 : exp3;(三目操作符)
如果其中表达式一的结果为真的话,表达式二要执行,表达式二的结果是整个表达式的结果;如果其中表达式一的结果为假的话,表达式三要执行,表达式三的结果是整个表达式的结果;
int a=10,b=20,max=0;
max(a>b ? a : b);
逗号表达式:
exp1,exp2,exp3,...expN
下标引用、函数调用和结构成员:
[] 下标引用操作符 arr[]
() 函数调用操作符 add()
.
->
Tips:C语言中0表示假 非0为真
EOF-end of file -文件结束标志- ASCII码值-1
原码、反码、补码:负数在内存中存储的时候,存储的是二进制的补码
只要是整数,内存中存储的都是二进制的补码
正数---原码,反码,补码相同
原码---------------------------------------------反码------------------------------------------------------补码
直接按照正负写出的二进制序列 原码的符号位不变,其他位按位取反得到 反码+1
反码是计算的中间状态
原码符号位不变,其余取反,得到反码,反码+1得到补码