C语言
C语言
(持续更新中)
C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
而嵌入式最基本的工具就是c语言,所以本文将分享一些c语言的语法。
C语言的输入输出
printf 输出
printf 是一个在多种编程语言中常见的函数或方法,主要用于格式化输出。在 C 语言中,printf 是标准库中的一个函数,它用于将格式化的数据输出到标准输出(通常是屏幕)。
我们可以查询 Linux系统的man手册查到该函数,可知该函数不仅能输出,还有int 类型的返回值。
printf 的返回值是一个整数(int 类型),表示成功输出的字符数(包括数字、字母、标点符号、空格等,但不包括最后的空字符 '\0')。这个返回值可以用于检查打印输出的字符数是否正确,或者用于计算输出的字符串长度。
如果 printf 函数发生错误(例如,输出到不可写的流或字符串格式化出错等),它可能会返回特殊的值 -1,表示打印输出失败。

#include<stdio.h>
int main()
{
int a=43;
printf("%d",printf("%d",printf("%d",a)));
return 0;
}
scanf 输入
在 C 语言中,scanf 函数通常与格式说明符一起使用,这些格式说明符告诉 scanf 如何解释输入的数据。例如,%d 用于读取整数,%f 用于读取浮点数,%c 用于读取字符,%s 用于读取字符串等。
scanf 的返回值是成功读取并赋值的变量数。如果达到或超过预期读取的变量数,则返回该数;如果未达到,则可能因为输入结束或遇到不匹配的输入而返回一个小于预期的值;如果输入失败或遇到文件结束符,则返回 EOF(在 C 语言中通常定义为 -1)。
以下是一个简单的 C 语言示例,演示了 scanf 的用法:
#include <stdio.h>
int main() {
int num;
float f;
char ch;
printf("Enter an integer, a float, and a character: ");
scanf("%d %f %c", &num, &f, &ch);
printf("You entered: %d, %.2f, %c\n", num, f, ch);
return 0;
}
在这个例子中,scanf 函数等待用户输入一个整数、一个浮点数和一个字符,并将它们分别存储在 num、f 和 ch 变量中。然后,printf 函数输出这些变量的值。
C语言运算符
C语言运算符是用于执行各种操作的符号,它们告诉编译器执行特定的数学或逻辑运算。这些运算符可以与一个、两个或三个操作数一起使用,并产生新的值。C语言中的运算符可以分为以下几类:
- 算术运算符:这些运算符用于执行基本的算术运算,如加法、减法、乘法、除法和取模等。例如:
+、-、*、/和%。 - 关系运算符:这些运算符用于比较两个操作数,并返回一个布尔值(真或假)。例如:
==、!=、>、<、>=和<=。 - 逻辑运算符:这些运算符用于执行逻辑运算,如逻辑与、逻辑或和逻辑非等。例如:
&&、||和!。 - 位运算符:这些运算符直接对操作数的二进制位进行操作。例如:
&、|、^、~、<<和>>。 - 赋值运算符:这些运算符用于给变量赋值。例如:
=和+=、-=、*=、/=等复合赋值运算符。 - 条件运算符(也称为三元运算符):这是一个特殊的运算符,它接受三个操作数,并基于第一个操作数的值来决定返回第二个还是第三个操作数的值。例如:
(条件) ? 表达式1 : 表达式2。 - sizeof运算符:这是一个特殊的运算符,用于返回特定类型或对象的大小(以字节为单位)。
- 逗号运算符:这个运算符用于分隔多个表达式,并返回最后一个表达式的值。
- 地址运算符:包括
&(取地址运算符)和*(解引用运算符或指针运算符)。
这些运算符在C语言编程中起着至关重要的作用,它们使程序员能够执行复杂的计算和逻辑操作。
以下是C语言运算符的优先级从高到低的排序:
- 圆括号
()、下标运算符[]、分量运算符->、结构体成员运算符.:这些运算符具有最高的优先级,用于改变运算顺序或访问结构体和数组的元素。 - 单目运算符:如逻辑非
!、按位取反~、自增++、自减--、取地址&、类型转换(类型)、长度sizeof等。 - 乘法运算符
\*、除法运算符/、取模运算符%:用于执行乘法、除法和取模运算。 - 加法运算符
+、减法运算符-:用于执行加法和减法运算。 - 移位运算符:左移
<<和右移>>,用于执行位的左移和右移操作。 - 关系运算符:小于
<、小于等于<=、大于>、大于等于>=。 - 等于运算符
==、不等于运算符!=:用于比较两个操作数是否相等或不等。 - 按位与运算符
&:用于执行位与操作。 - 按位异或运算符
^:用于执行位异或操作。 - 按位或运算符
|:用于执行位或操作。 - 逻辑与运算符
&&:用于执行逻辑与操作。 - 逻辑或运算符
||:用于执行逻辑或操作。 - 条件运算符
? ::这是一个三元运算符,根据条件表达式的值选择两个操作数中的一个。 - 赋值运算符
=以及复合赋值运算符:如+=、-=、*=、/=等,用于给变量赋值。
如果表达式中运算符的优先级相同,那么运算的顺序会按照运算符的结合性来决定。大多数二元运算符(如加法、乘法等)都是左结合的,即从左到右进行运算。而条件运算符 ? : 和赋值运算符 = 是右结合的,即从右到左进行运算。
1、算术运算符
在C语言中,算术运算符是用于执行数学运算的符号。这些运算符允许你执行基本的算术操作,如加法、减法、乘法、除法和取模。算术运算符通常用于操作整数(int)和浮点数(float 或 double)。
以下是C语言中主要的算术运算符:
加法运算符 (+):用于将两个数相加
#include<stdio.h>
int main()
{
int a = 5;
int b = 3;
int num = a + b;
printf("%d\n",num);//打印 num 的值为 8
return 0;
}
减法运算符 (-):用于从一个数中减去另一个数
#include<stdio.h>
int main()
{
int a = 5;
int b = 3;
int num = a-b;
printf("%d\n",num);//打印 num 的值为 2
return 0;
}
乘法运算符 (*):用于将两个数相乘
#include<stdio.h>
int main()
{
int a = 5;
int b = 3;
int num = a*b;
printf("%d\n",num);//打印 num 的值为 15
return 0;
}
除法运算符 (/):用于将一个数除以另一个数。对于整数除法,结果将被截断为整数
#include<stdio.h>
int main()
{
int a = 10;
int b = 3;
int num = a*b;
printf("%d\n",num);//打印 num 的值为 3
return 0;
}
如果你想要得到浮点数的结果,你需要至少有一个操作数是浮点数
取模运算符 (%):也称为求余运算符,用于得到一个数除以另一个数的余数
#include<stdio.h>
int main()
{
int a = 10;
int b = 3;
int num = a % b;
printf("%d\n",num);//打印num 的值为 1,因为 10 除以 3 的余数是 1
return 0;
}
自增运算符 (++):将变量的值增加1
#include<stdio.h>
int main()
{
int a = 10;
int b = 3;
printf("a=%d,b=%d\n",a++,++b);//打印输出a的值为10,因为自增运算符在后面所以先打印再加一!!!
//打印输出b的值为4,因为自增运算符在前面所以先再加一再打印!!!
return 0;
}
自减运算符与自增运算符同理
在使用算术运算符时,需要注意整数除法的行为,因为结果会被截断为整数。如果你需要浮点数结果,确保至少有一个操作数是浮点数。此外,当使用自增和自减运算符时,要注意它们的前缀和后缀形式,因为它们在表达式中的位置会影响它们的行为。

浙公网安备 33010602011771号