C语言入门2:基本数据类型、运算符和变量
1、基本数据类型–字符型、整型和浮点型
1.1 示例
在Hello World示例使用了字符串,在C语言中还有一类常用的数据类型–数值类型。例如:字符c、整数123和小数3.14。
#include <stdio.h>
int main(){
printf("%c\n",'a'); //字符型
printf("%d\n",123); //整形
printf("%f\n",3.14); //浮点型
}
1.2 说明
字符型是单个字符,必须使用英文单引号包裹。
这里使用了输出函数另一种用法:
printf("输出格式",输出项列表);
1.3 输出格式
%c(c是charactor的首字母)表示输出单个字符
%d(d是十进制数decimal的首字母)表示输出整数
%f(d是浮点数float的首字母)表示输出小数
输出项列表:即存放要输出的变量名称。
注意,这里使用printf()时,前面的字符串和后面的数字中间用逗号,隔开。这里的**%c、%d和%f称为占位符**,在终端输出时,用后面的的数字替换。注意,不同类型的占位符是有区别的,用错了打印的值也会错误。
2、运算符–简单运算符(算术、关系和逻辑)
2.1 算术运算符
(1)示例
运算符 | 符号 | 操作 | 用例 | 结果 |
---|---|---|---|---|
加法 | + | 将其两侧值相加 | 1+2 | 3 |
减法 | - | 将其两侧值相减 | 3-1 | 2 |
乘法 | * | 将其两侧值相乘 | 2*3 | 6 |
除法 | / | 用左边的值除以右边的值 | 8/3 | 2(整数的除法会丢掉小数部分) |
取模/取余 | % | 求用它左边的值除以右边的数后的余数 | 5%3 | 2(%运算符两侧的操作数必须为整数) |
(2)特点
优先级: / % > + -
结合律:自左向右*
2.2 关系运算符
(1)示例
运算符 | 符号 | 操作 |
---|---|---|
等于 | = | 检查两个操作数的值是否相等,如果相等则条件为真。 |
不等于 | != | 检查两个操作数的值是否相等,如果不相等则条件为真。 |
大于 | > | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 |
小于 | < | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 |
大于等于 | >= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 |
小于等于 | <= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 |
(2)说明
C语言中0为假,其余为真!
(3)特点
优先级:算术运算符 > > >= < <= > == !=
结合律:自左向右
2.3 逻辑运算符
(1)示例
运算符 | 符号 | 操作 |
---|---|---|
与 | && | 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 |
或 | ll | 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 |
非 | ! | 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 |
(2)说明
优先级:! > 算术运算符 > 关系运算符 > && > ||
结合律:&&与||自左向右;!自右向左。
2.4 优先级和括号
运算符都有优先级,改变优先级使用括号()
3、变量
杯子的作用是盛水,而变量的作用是保存数据
3.1 基本语法
(1)定义
定义用来说明变量的名字和类型
先指定类型,然后指定变量名
int a;//定义整型变量a
float b;//定义浮点型变量b
(2)赋值
int a=1;//a是整型1
float b=1.2;//b是浮点型1.2
(3)使用
使用方法与常量相同,直接用变量代替常量
(4)初始化
定义和赋值通常可以写在一起,这种定义时赋值的操作被称为初始化。
3.2 命名规则
(1)变量名是字母、数字和下划线的组合。
(2)变量名的开头必须是字母或下划线,不能是数字。
(3)实际编程中最常用的是以字母开头,而以下划线开头的变量名是系统专用的。
(4)变量名中的字母是区分大小写的。比如a和A是不同的变量名,num和Num也是不同的变量名。
(5)变量名绝对不可以是C语言关键字。关键词是由C语言规定的具有特定意义的字符串,通常也称为保留字。
标准C语言的关键字:
3.3 重点
(1)变量使用前必须先初始化(定义和赋值)
(2)变量显性三要素:类型、变量名、值
4、表达式
变量和常量能够参与计算,这种计算的式子称为表达式,表达式由运算符和操作数组成。
表达式必有计算结果。
5、输入
输入一个时分秒组成的数字,按照XX时XX分XX秒打印出来。例如:输入180301,打印出18时3分1秒。
#include <stdio.h>
int main(){
int a,h,m,n;
scanf("%d",&a);
h=a/10000;
m=a%10000/100;
n=a%10;
printf("%d--%d--%d",h,m,n);
}
6、复合赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
+= | 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 | C += A 相当于 C = C + A |
-= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 | C -= A 相当于 C = C - A |
*= | 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 | C *= A 相当于 C = C * A |
/= | 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 | C /= A 相当于 C = C / A |
%= | 求模且赋值运算符,求两个操作数的模赋值给左边操作数 | C %= A 相当于 C = C % A |
7、自增运算符++和自减运算符
7.1 示例
运算符 | 描述 | 实例 |
---|---|---|
++ | 自增运算符,整数值增加 1 | ++A 相当于 A=A+1 |
– | 自减运算符,整数值减少 1 | –A 将得到 A=A-1 |
7.2 说明
(1)自增运算符++,自减运算符–和复合赋值运算符主要是用于简化代码
(2)自增运算符和自减运算符优先级高于算术运算符