C语言简明教程(七):运算符、表达式和语句

接上一节字符串、常量和格式化输入输出实例详解

本文主要讨论C语言中的运算符、表达式和语句,其中还讨论到一些重点的内容,如类型转换、自动类型转换和强制类型转换,以及C语言函数的正确使用方式。

C语言运算符、表达式和语句

一、C语言运算符

1、基本运算符

C语言的基本运算符如下所示:

运算符 说明
赋值运算符= 数据对象:存储值的数据区域
左值:标识数据对象的名称
将值赋给数据对象
加法运算符+ 两个数据对象之间的加法运算
减法运算符- 两个数据对象之间的减法运算
除法运算符/ 除法运算
正整数除法:舍弃小数部分
负整数除法:向0靠近
浮点数除法:保留小数部分
乘法运算符* 两个数据对象之间的乘法运算

C语言运算符优先级如下:

运算符 结合律
一元加减法运算符+- 从右到左边
乘除法运算符*/ 从左边到右边
二元加减法运算符+- 从左边到右边
赋值运算符= 从右到左边
() 从左边到右边

使用运算符实例代码如下:

int basic = 45; // 使用赋值运算符
int current = 80;
printf("+: %-10d-: %-10d\n", current + basic, current - basic); // 使用加法、减法运算符
int width = 400;
int height = 800;
float rgb = 18.9f;
printf("*: %-10d\\: %-10f\n", width * height, rgb / width); // 使用乘法、除法运算符

2、其它运算符

运算符 说明
sizeof运算符 1、用于计算数据对象的大小,包括计算变量和类型的大小,返回类型为size_t。
2、typedef用于创建类型别名,size_t的定义类似:
typedef unsigned
int size_t
3、size_t编译器根据系统的不同替换相应的标准类型
求模运算符% 取余
递增运算符++ 分为前自增和后自增,两者的区别主要体现在表达式多个变量的运算中:
1、前自增++var,var先加1再进行表达式运算
2、后自增var++,先进行表达式运算,后再加1
递减运算符– 分为前自减–var和后自减var–,类似递增运算符
强制类型运算符() 强制转换类型

其中类型转换分为自动类型转换和强制类型转换:

1、自动类型转换:主要发生在混合类型计算的情况下,如果是表达式运算,进行升级类型转换,如char short转为int或者unsigned
int,在表达式运算中都是较小类型转为较大类型。

如果是两种类型的运算,分别转换成两种类型的更高级别类型。

如果是函数参数传递,float转为double运算,char或short转为int。

如果是赋值语句,有可能会强制降级,主要看左值的数据类型是否低于右边值的数据类型。

自动类型转换一般不太安全,在开发中尽量使用相同类型进行运算,或者使用枪支类型转换。

2、强制类型转换:使用强制类型运算符(),例如(int)3.14,将浮点数3.14强制转为int类型,转化后的值为3。

使用运算符实例代码如下:

// 1、sizeof运算符
size_t size = sizeof(float); // sizeof运算符,返回float类似的大小
printf("size: %10u\n", size); // => 4

// 2、%取模运算符
int mod = 8%3; // %取模运算符,返回8除以3的余数
printf(" mod: %10d\n", mod); // => 2

// 3、自增自减运算符
int value = 3;
// 在不参与多个变量表达式的运算中,前后自增或自减没什么区别
value++;
value--;
++value;
--value;
printf(" val: %10d\n", value);// => 3

// 参与其它变量的表达式运算,前自增自减和后自增自减的效果不同
int number = ++value; // 前自增,先自增后表达式运算,此时value的值为4
printf(" num: %10d\n", number); // => 4
number = value++; // 后自增,value先参与表达式运算,后自增,value的值为5,value赋给number的是4
printf("value: %-10d number: %-10d\n", value, number); // => 5 4

// 4、()强制类型运算符
float pi = 3.14;
int PI = (int)pi;
printf("%d\n", PI); // => 3

二、表达式和语句

表达式由运算符和数据对象组成,例如a+b是一个表达式,表达式后加分号成为表达式语句,注意变量或函数声明不是语句,在C语言中它仅仅是一个声明,语句是C程序的最基本单元,常见的语句有赋值表达式语句var = 4,函数表达式语句,例如调用printf函数,空语句一个分号。符合语句块由一对花括号括起来,包含一条或多条语句。

注:C语言其中有两个专有名词,副作用和序列点,副作用的意思是对数据对象或文件的修改,序列点是程序的执行点,以及完整的表达式的结束。(不用太关系这个,不大影响编程)

在C语言中语句主要集中在函数或其它一些语句块中,C语言函数的标准使用:首先需要进行函数原型的声明,然后进行函数定义实现,在项目开发中,函数原型声明一般放在自定义.h头文件中,函数实现放在.c源文件中。

C语言语句和函数的代码实例如下:

// 函数原型声明
void run(char *message);

int main() {
    char *message = "shall we talk"; // 赋值语句
    if(strlen(message) > 4){ // 比较表达式
        run(message); // 调用函数语句
    }
    return 0;
}

// 函数实现
void run(char *message){
    printf("running: %s\n", message); // 调用函数语句
}
微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?