1.数据类型
C语言中数据类型分为:
1)基本数据类型
特点:其值不可以再分解成其他类型,基本数据类型是自我声明的
数据类型 | 类型说明符 | 字节 | 数值范围 |
字符型 | char | 1 | C字符集 |
基本整型 | int | 2 | -32 768 ~ 32 767 |
短整型 | short int | 2 | -32 768 ~ 32 767 |
长整型 | long int | 4 | -2 147 483 648 ~ 2 147 483 647 |
无符号整型 | unsigned | 2 | 0 ~ 655 35 |
无符号长整型 | unsigned long | 4 | 0 ~ 4 294 9672 95 |
单精度实型 | float | 4 | 3.4E - 38 ~ 3.4E + 38 |
双精度实型 | double | 8 | 1.7E - 308 ~ 1.7E + 308 |
2)构造数据类型
构造数据类型根据已定义的一个或多个数据类型用构造的方法来定义的。就是说,一个构造类型的值可以分解成若干“成员”或“元素”。每个“成员”都是一个基本数据类型或又是一个构造类型。在C语言中,构造类型有以下几种:数组类型、结构类型、联合类型。
3)指针类型
是一种特殊的同时又具有重要作用的数据类型,其值用来表示某个量在内存储器中的地址。指针变量的取值类型类似于整型,但这是两个类型完全不同的量,不能混为一谈。
4)空类型
在调用函数时,通常会向调用者返回一个函数值,这个返回的函数值是具有一定的数据类型的,应在函数定义及函数说明中给以说明。
比如以下代码,函数返回的值就是整性(int)
#include <stdio.h>
int main() /* 主函数 */
{
int max(int x,int y); /* 对被调用的函数max()的声明 */
int a,b,c; /* 定义三个整形变量,a,b,c */
printf("两个学生的成绩分别是:");
scanf("%d,%d",&a,&b); /* 从键盘上获取a,b的值 */
c=max(a,b); /* 调用max()函数,并将得到的值赋给c */
printd("较高分是:%d",c)
}
int max(int x,int y) /* x和y的值就是上面传递过来的a和b的值 */
{
int z;
if(x>y) z=x; /* 如果x大于y,把x的值赋值给z */
else z=y; /* 如果不满足x大于y这个条件,把x的值赋值给y */
return(z); /* 返回z的值到主函数中 */
}
但是,也有一类函数,调用后并不需要向调用者返回函数值,这种函数就是“空类型”,其类型说明符为void。
2.常用运算符与表达式
1)运算符分类
①算术运算符:加(+)、减(-)、乘(*)、除(/)、求余(或模运算,%)、自增(++)、自减(--)
②关系运算符:大于(>)、小于(<)、等于(=)、大于等于(>=)、小于等于(<=)、不等于(!=)
③逻辑运算:与(&&)、或(||)、非(!)
④位操作运算:参与运算的量按二进制位进行运算。位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)
⑤赋值运算:分为
简单赋值(=)、
复合算术赋值(+=、-=、*=、/=、%=)
复合位运算赋值(&=、|=、……=、>>=、<<=)
⑥条件运算符:三目运算符,(?:)
示例
(a>b?a=2:a=3)
它的逻辑是 如果a>b成立,a=2,否则a=3
⑦逗号运算符
⑧指针运算符:用于取内容(*)和取地址(&)两种运算
⑨求字节数运算符
⑩特殊运算符:包括括号()、下标[]、成员(- >,.)等
关于自增自减
在自增自减运算符的前缀和后缀形式中有区别:
前缀形式 (++i, --i) 的优先级高于后缀形式 (i++, i--),即前缀形式会先执行自增或自减操作,再进行其他运算。
例如:
int i = 5; int result = ++i * 2; // 先执行++i,i变为6,然后再进行乘法运算 result的值为 12
后缀形式的自增和自减运算符在表达式中会按照从左到右的顺序依次执行。
例如:
nt i = 5; int result = i++ * 2; // 先进行乘法运算,然后再执行i++ result的值为 10
运算符的优先级
如下所示(从高到低):
1. 小括号 ()
2. 单目加 + 和减 -
3. 逻辑非 !
4. 乘法 *,除法 /
5. 取模 %
6. 加法 +,减法 -
7. 移位 <<,>>
8. 大于 >,大于等于 >=,小于 <,小于等于 <=
9. 相等 ==,不相等 !=
10. 位与 &
11. 位异或 ^
12. 位或 |
13. 逻辑与 &&
14. 逻辑或 ||注意:不同运算符的优先级决定了它们在表达式中的执行顺序,如果需要改变默认的顺序,可以使用小括号来明确指定。
3.输入、输出语句(scanf\printf)
假设我们从键盘上输入一个整数,并将输入的值存储在名为num的变量中,那么对应不同类型的num,其对应的输入输出语句也不同:
整型(int)
int num;
scanf("%d", &num);
printf("%d\n", num);
浮点型(float)
float num;
scanf("%f", &num);
printf("%f\n", num);
字符类型(char)
char num;
scanf("%c", &num);
printf("%c", num);
字符串类(string)
char str[100];
scanf("%s", str);
printf("%s", str);
双精度浮点型(double)
double num;
scanf("%lf", &num);
printf("%lf\n", num);
~over~