如:"Hello World!" 、"ab"
注意:字符串末尾都有一个用表示字符串结尾的\0字符。
'a' 和 "a" 区别:
'a' : 字符常量,只有一个字符a
"a" :字符串常量,有二个字符 'a' + '\0'
举例:
"ab\0" 有4个字符: 'a' 'b' '\0' '\0'
"ab\\\123ab" 有7个字符: 'a' 'b' '\\' '\123' 'a' 'b' '\0'
#define N 5
宏只是代码的替换,中间不进行任何数据计算的操作
宏名一般都是大写,用来和变量区分
数据类型 数据名:
int Num1, Num2, Num3;
初始化:定义变量的时候对变量赋初值
int Num = 0;
赋值:定义变量后,对变量赋值
Num = 5;
初始化 != 赋值
注意:
1. 未经初始化的变量值为随机值。
2. 定义变量时最好对变量初始化。
运算符 | 解释 | 注意 |
+ | 两个操作数相加 | |
- | 两个操作数相减 | |
* | 两个操作数相乘 | |
/ | 两个操作数相除 | 不能除以0 |
% | 取模运算,也是整除后取余数 | 不能对浮点数操作 |
++ | 自增运算,整数数值加1 | |
-- | 自减运算,整数数值减1 |
练习:
定义两个变量可以是整形或者浮点数类型,对这两个变量赋值,
并计算这两个数四则运算的结果并打印在终端
自增/自减运算符:
i++:先用再加 i--:先用再减
++i:先加再用 --i:先减再用
= | 简单的赋值运算符,把右边操作数的值赋给左边操作数 |
+= | 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 |
-= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 |
*= | 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 |
/= | 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 |
%= | 求余数且赋值运算符,求两个操作数的模赋值给左边操作数,浮点数不适用取余数 |
左值:允许放在赋值运算符左边的值(变量)
注意:常量、表达式均不能作左值
右值:允许放在赋值运算符右边的值(常量、变量、常量变量组成的表达式)
左值为浮点数类型,右值为整型,会将值扩展精度
左值为整数类型,右值为浮点数类型,会舍弃精度
左右两边均为整型:将右值直接拷贝到左值空间中
小数据放入大空间:数据扩展,有符号数高位补符号位,无符号高位补0
大数据放入小空间:直接截取数据低位放入小空间
举例:
char ch = 300;
printf("ch = %d\n",ch);
结果为:44
300的二进制:0000 0000 0000 0000 0000 0001 0010 1100
char为1字节,直接截取0010 1100,转换为十进制:44
char ch = 130;
printf("ch = %d\n",ch);
结果为:-126
130的二进制:1000 0010
char为有符号字符类型,最高位为符号位,存储的是补码
反码为:1000 0001
原码为:1111 1110
所以转为十进制为:-126
表达式?表达式1 :表达式2
练习:定义三个变量,并对变量赋值,通过三目运算符获得3个数中的最大值并打印
vim test.c
gcc test.c -o test
./test
#include
int main(void)
{
int Num1 = 5;
int Num2 = 9;
int Num3 = 2;
int MaxNum1 = 0;
int MaxNum2 = 0;
MaxNum1 = Num2 > Num1 ? Num2 : Num1;
MaxNum2 = MaxNum1 > Num3 ? MaxNum1 : Num3;
printf("%d\n",MaxNum2);
return 0;
}
结合方向:自右至左
x > y ? x : (y > z ? y : z)
从左到右依次执行表达式,并将最后一个逗号表达式的结果作为整体逗号表达式的结果
sizeof (数据类型/变量名) 获得数据类型/变量在内存中所占的字节数
功能:在终端打印一个字符
示例:
putchar('a');
char ch = 'A';
putchar(ch);
putchar(ch + 32);
注意:
1.putchar 只能打印一个字符,想打印多个字符需要多次调用putchar
2. putchar 只能打印字符
练习:
vim test3.c
gcc test3.c -o test3
./test3
#include
int main(void)
{
putchar('H');
putchar('e');
putchar('l');
putchar('l');
putchar('o');
putchar(' ');
putchar('W');
putchar('o');
putchar('r');
putchar('l');
putchar('d');
putchar('!');
return 0;
}
功能:从终端接收一个字符
注意:
1.getchar会将程序阻塞,直到用户输入数据,程序才能继续向下执行
2.getchar只能接收一个字符,想要接收多个字符需要多次调用
3.getchar只能接收字符
1. 定义一个圆的半径,并赋初值,计算圆的周长和面积完成打印
2. 利用putchar和getchar实现从终端接收一个小写字母,转换成其对应的大写形式输出
3. 定义两个整形变量并对变量赋初值(初值为2位数),要求将两个数合并成一个新数并打印
新数的千位是第二个数的十位
新数的百位是第一个数的十位
新数的十位是第一个数的个位
新数的个位是第二个数的个位
注意:利用四则运算对数字拆分和拼接
Num1: 12
Num2: 34
NewNum: 3124