21天学习C语言-第四天

35次阅读

共计 2397 个字符,预计需要花费 6 分钟才能阅读完成。

语句,表达式和运算符。
语句(Statements)
C 中语句指的是一个让计算机执行某任务的完整指令,一般来说一行为一个语句,以分号结尾。栗子:
x = 2 + 3; // 计算机执行 2 + 3 并存到 x 中,一个简单的语句
以下各写法,操作是一样的:
x=2+3; // 变量和操作数之间没有空格
x = 2 + 3; // 变量和操作数之间有空格
x =
2
+
3; // 变量和操作数不在一行
C 不关心语句中的空格,编译器只识别字符,会自动忽略空格。处于可读性的考虑,建议使用第二种写作方式。编译器并不会忽略常量中的空格,比如:
“HELLO WORLD, NICE TO MEET YOU!” // 单词之间的空格不会被忽略掉
特殊情况也存在多行为一个语句,并且有不以分号结尾的语句。例子:
// 不以分号结尾
#include<stdio.h>
#define PI 3.14
// 一个语句折行,虽然不好看,但是合法
printf(
“hello world!”
);
// 在字符串中直接折行是不合法的
printf(“Hello,
world!”);
// 如果需要折行,在折行处添加 \
printf(“Hello,\
world!”);
空语句 (Null Statements) 就是什么也不做的语句,直接放置一个分号;,表示当前行的代码不做任何操作。复合语句 (Compound Statements) 是多个语句在一起组成的一个语句块,差不多所有的程序中都包含了复合语句, 例子:
{
x = 2;
y = x + 1;
}

表达式(Expressions)
表达式是计算数值的任何东西 (按原文直译),感觉就是数据本身,和存储数据的变量,常量都是表达式,同时也包含数据计算的操作。简单表达式(Simple Expressions) 是单一组成,比如变量,常量等。
PI // 常量 π
0 // 数字
name // 变量
复杂表达式 (Complex Expressions) 与单一相对,由多个单一组成。
x + y
z = x + 10;

运算符(Operators)
运算符是命令计算机对操作数执行对应操作的符号。
赋值运算符(Assignment Operator)
赋值运算符就是等号(=),把一个值给一个变量。
x = y
数学运算符(Mathematical Operators)
数学运算符顾名思义,进行数学运算的符号。C 中数学运算包括两个一元运算符 (Unary Mathematical Operators) 和 5 个二元运算符(Binary Mathematical Operators)。一元运算符表示操作数只有一个的运算符,既 ++ 和 –,也就是大家熟知的自增和自减运算。
int x = 10, y = 9;
x ++; // 11
y –; // 8
二元运算符操作数有两个,包括加 (+) 减(-)乘 (*) 除(/)和求余(%)。
int x = 10, y = 5, z;
z = x + y; // 15
z = x – y; // 5
z = x * y; // 50
z = x / y; // 2
z = x % y; // 0
运算符的优先级(Precedence)
这里的优先级基本遵循了数学运算的优先级,括号最好,其次是乘除,最后是加减。
x = 4 + 5 * 3; //19
比较特殊的是 ++,– 和 %,++,– 的优先级高于乘除,求余和乘除相同。
z = 12 % 5 * 2; // 4, 由于是同级,从左到右计算,先求余,然后相乘

int x = 5, y;
y = 2 * ++x; //12, ++ 优先计算
如果是嵌套括号,则内部的优先级高于外部,由内到外依次计算。
x = 25 – (2 * (5 + (4 / 2))); // 11
关系运算符(Relational Operators)
关系运算符就是我们常用的比较大小,是否相等的运算符,常见于 if 语句中。包括等于 (==),大于(>),小于(<),大于等于(>=),小于等于(<=) 和不等于(!=)。
if (age>=18) {
printf(“%s”, “ 成年人!”);
}
if 语句
if 语句用来控制程序的运行。可单一使用 if 结构,也可与 else 或者 else if 一起使用。整个 if 语句结构执行完毕之后,继续执行 if 结构之后的代码。
// if 的执行部分不用大括号包裹,为了可读性,不建议这样写
if (x > y)
y = x;
// 推荐
if (x > y)
{
y = x;
}
// else if
int x = 10;
if (x > 10)
{
printf(“x 大于 10”);
}
else if(x > 5)
{
printf(“x 大于 5 ”);
}
else
{
printf(“x 小于 5 ”);
}
printf(“if 语句执行完毕 ”);

计算关系表达式(Evaluating Relational Expressions)
有 if 的地方就有 true 和 false,true 和 false 对应到数字就是 1 和 0。
a = (5 == 5); // a 等于 1
a = (5 != 5); // a 等于 0
另外,不等于 0 的数字都认为是 true,包括负数。有些人认为 0 是分界线,大于 0 才是 true,这是不正确的。- 1 做为 if 的条件,是按 true 进行处理的。
关系运算符优先级
在 if 条件中,一般不只有关系运算,还包含数学运算,数学运算的优先级高于关系运算。
if (x + 2 > y) // 先算 x + 2
等于和不等于的优先级低于大于小于的比较。

x == y > z // 先计算 y > z

逻辑运算符(Logical Operators)
逻辑运算符有三个,与 (&&) 或(||)非(!)。
x > 2 && y < 5 // 两个条件同时成立时是 true
x > 2 || y < 5 // 两个条件有一个成立时是 true
!(x > 2) // 条件不成立时是 true
逻辑运算符的优先级比较低,之前提到的优先级都高于逻辑运算符,! > && > ||。
符合赋值运算符(Compound Assignment Operators)
符合赋值运算符是当某个变量自身进行数学运算时的一种简化写法。如:
x = x + 5;
x += 5;

条件运算符(Conditional Operator)
条件运算符是简单 if 的一种简化,常用于二选一的时候。例子:
int x = 5;
int y = x > 0 ? 1 : 0;
当 x 大于 5 的时候 y 等于 1,否则 y 等于 0。
内容不复杂,但作者的讲解很详细,篇幅很大!

正文完
 0