【1】数据类型
1--- 定义变量
数据类型 变量名 = 初始值;
数据类型 变量名;
变量名:由数字、字母、下划线组成,开头不能是数字
2--- bool
#include <stdbool.h>
bool a = 123;
printf(“a = %d\n”,a);
3--- char
char a = 'A'; //占1个字节,8位
printf(“a = %c\n”,a); --> A
printf(“a = %d\n”,a); --> 65
signed char :-128~127
unsigned char :0~255
4--- int
int 占4字节,32位
signed int :-2147483648 ~ 2147483647
unsigned int :0~ 4294967295
short 占2字节,16位
signed short :-32768 ~ 32767
unsigned short :0 ~ 65535
long 占4字节
5--- float
float 占4字节
double 占8字节
【2】数据的存储
正数:unsigned char a = 12
0000 1100 源码、反码、补码相同
负数:signed char a = -12
1000 1100 源码(最高位是符号位)
1111 0011 反码(符号位不变,其它位取反)
1111 0100 补码(反码+1)
unsigned char b = -1; signed char c = 129;
存储(看数值): 存储(看数值):
源码: 1000 0001 --> -1 源码: 1000 0001 --> 129
反码: 1111 1110
补码: 1111 1111 读取(signed):
读取(unsigned): 补码: 1000 0001
反码: 1000 000
补码: 1111 1111 --> 255 源码: 1111 1111 --> -127
【3】全局变量和局部变量
全局变量,不初始化时为0。
局部变量,不初始化时为随机值。
全局变量和局部变量名字相重时默认使用局部的变量。
【4】常量
只读的数据。
字符常量 :‘A’ ‘*’ ‘!’ ‘\n’
整数常量 : 12 012 0x12
浮点型常量: 12.34
指数常量 : 1.2e-3
字符串常量: "world" //以‘\0’作为结束标志
"world" // w o r l d \0
‘w’ //一个字符
"w" //字符串: 'w' + '\0'
【5】运算符
1--- 算术运算符
+ - * / %(参与运算的只能是整数)
++ 自增运算符;++在变量名的后面:则先参与其他所有运算,再执行自增
-- 自建运算符;--在变量名的后面:则先参与其他所有运算,再执行自减
2--- 关系运算符
运算结果只有两种情况:真1 假0
< <= > >= == !=
3--- 逻辑运算
运算结果只有两种情况:真1 假0
&& :一假则假
|| :一真则真
! :真变假,假变真
短路原则:当一个表达式可以决定整个运算的结果,其它运算不执行
4--- 位运算
~ :位运算取反
^ :异或,相同为0,不同为1
& :位与
| :位或
a>>n : a / 2^n;
a<<n : a * 2^n;
5--- 复合运算符
= += -= *= /= %=
&= |= ^= <<= >>=
6--- 条件运算符
<表达式1> ? <表达式2> : <表达式3>
先判断表达式1,为真执行表达式2, 为假执行表达式3
【6】运算优先级
()
++ --
* / %
+ -
<< >>
关系运算
位运算符(& ^ |)
逻辑运算
赋值运算,复合运算符
,
源码及注释:
1、1_bool.c
#include <stdio.h>
#include <stdbool.h>
//数据类型 变量名 = 初始值;
int main(int argc, const char *argv[])
{
bool a = 123;
printf("a = %d\n", a); //printf:用于向终端输出指定格式的数据
//双引号里的数据原样输出,除%形式以外
a = 0;
printf("a = %d\n", a); //printf:用于向终端输出指定格式的数据
return 0;
}
2、2_char.c
#include <stdio.h>
//数据类型 变量名 = 初始值;
int main(int argc,