21天学习C语言-第四天

语句,表达式和运算符。lua

语句(Statements)

C中语句指的是一个让计算机执行某任务的完整指令,通常来讲一行为一个语句,以分号结尾。栗子:code

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)是多个语句在一块儿组成的一个语句块,差很少全部的程序中都包含了复合语句,例子:it

{
    x = 2;
    y = x + 1;
}

表达式(Expressions)

表达式是计算数值的任何东西(按原文直译),感受就是数据自己,和存储数据的变量,常量都是表达式,同时也包含数据计算的操做。
简单表达式(Simple Expressions)是单一组成,好比变量,常量等。io

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。

内容不复杂,但做者的讲解很详细,篇幅很大!

相关文章
相关标签/搜索