C语言入门(基础二)

Posted Aline2021-yxz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言入门(基础二)相关的知识,希望对你有一定的参考价值。

延续上作,本篇博客带大家继续入门C语言

运算符

C语言为我们提供了很多的运算符,有单目运算符,双目运算符和三目运算符,这里的一目二目三目指的是操作的对象个数,我们可以使用这些运算符来解决一些实际的问题,接下来就一一认识一下吧:

赋值运算符:‘=’就是赋值运算符,是双目运算符,可以使用它对变量进行赋初值,例如:

我们在上面的代码中分别对a,b,c赋了初值,在后面我们使用到它们的时候它们的值就是我们赋给他们的,这就是赋值操作符。

算术运算符:‘+’ ,‘ -’,‘*’,“/”,“%”,这些都是双目运算符,/是除法,%是取模(余数),这些运算符想必大家是很熟悉的,数学中经常用到,在这里我想多说的是C语言只会进行加法运算,所谓的减法其实是加负数。
这里还有两个大家不熟悉的算术运算符‘++’和‘- -’(这里的减减中间是没有空格的,因为编译器的问题我加了一个空格以让大家看清),这两个运算符是自增和自减的意思,要注意它们放的位置不同效果不同,上代码:


可以看到我们对a赋初值为0,在输出的时候应该是a++,应该是++a,可以看到结果是不同的。
++在变量的前面,是先对变量的值加1,再使用变量,如果是在后面先使用变量的值,再对变量进行加一操作。

现在应该清楚了吧。

关系运算符
“>”,"<=",">=","==","<","!=",双目运算符,关系运算符的含义很简单,它是用于两个值的比较,返回的值只有两个,关系成立返回真,关系不成立返回假,真值是1,假值是0,上代码:


两次的代码不一样之处就是b和c的值相不相等,==是判断左右两边的值是否相等的运算符,我们将其结果存放到a中去,可以看到b与c相等时a=1,不相等时a=0,所以说关系运算符只会返回1/0;

这里我想多说一些,一定要区分==和=,它们是完全不一样的运算符,前者起的是判断作用,后者则是赋值,如果使用错误会造成不可预期的错误,所以一定不要记混了,即使是一些经验丰富的程序员有时候也会反这种错误。

逻辑运算符
“&&”,“||”,“!”,这三个叫逻辑运算符,它们会根据表达式的真假返回真值或者假值,是不是和上面的关系运算符有点类似?不同的是这里的真是非0值(等价1),假依然是0.

“&&”:双目操作符,逻辑与,两边都为真的时候返回真,有任何一方为假就返回假。

a为假,所以返回0.

“ ||” :双目操作符,逻辑或,只要有一边为真就返回真,否则返回假。
“ !”:单目操作符,逻辑非,就是把真变成假,把假变成真

位逻辑运算符
“&”,“|”, “^” , " ~"
“&”:按位与,双目运算符,相同为1,不同为0。
“|”:按位或,双目运算符,有1为1,无1为0。
“^”:按位异或,双目运算符,相同为0,相异为1。
“ ~ ”:按位取反,单目运算符,将1变成0,0变成1。
要注意这里的按位的意思是按照二进制的补码进行,这也就意味着这些运算符不能对小数使用,不清楚补码的小伙伴快去补知识啦。

移位运算符:和上面的一样,也是对二进制补码进行
“<<” :左移运算符,将二进制补码左移一位,在最低位补0;
例如:将0001左移一位得到的是0010。
“>>”:右移操作符,将二进制补码右移一位,最高位补原来的最高位(符号位)
例如:将1000右移一位得到1100。

复合赋值运算符:其实是一种缩写
"+= " "-= " " * = " "/= " " %= " "&= " "|= " "~= " “^=”
a+=b其实就是a=a+b;其他的运算符都是一样的。

优先级:非常重要的一个概念,运算符的优先级会决定运算顺序,就好比乘除要比加减先算,以下是运算符优先级表,每一本C语言的入门书都会有这张表:


这里建议大家直接上手操作,多练。

C语言三大结构

所有的C语言程序都是由这三种结构组成的,可见这三大结构的重要性。

顺序结构

顺序结构是最简单的了,它就是说C语言的每条语句都是自上而下执行的,不会无缘无故地跳过某个语句,也不会无缘无故的重复执行某条语句,从前面的代码中可以看出,在基础一中的最简单程序中只打印了一个Hello world,没有重复打印。

选择结构

选择结构可以决定哪些语句执行,哪些语句不执行。

if语句
首先来看看if语句的基本形式

除了这种形式外还有如下:

但是仅仅上面的两种形式是不够用的,例如以下代码;

这里我想通过输入不同的a来输出不同的值,但是当我输入1的时候却出现了问题,他竟然同时打印了haha和lala,通过分析我们也很容易找出问题,a=1的时候第一个if为真,执行输出了haha,但是程序未结束,继续向下,第二个if判断为假,没有执行hehe,但是else可就要执行了,于是输出了lala。

为了解决这样的问题,C语言的if语句还有一种形式:

多了一个else if(),就能够解决上述的问题,a=1的时候if判断为真,那么就会跳过后面的else if和else,从而避免了上述问题的发生。

假如我要在a大于10的时候输出haha,再a大于0且小于10的时候输出hehe,其他的时候输出lala,那么我在写第二个判断的时候就不用写成a>0&&a<10了因为当if判断为假的时候a必然是小于10的,这样就不用重复书写了。

switch语句:C语言选择语句的另外一种。
基本形式如下:

注意switch后面的变量必须是整形,可以是整形表达式,char也可以,每条语句后都有一个break,可以在执行完语句后跳出选择语句,不会执行下面的语句,如果没有了break,那么下面的代码会出现这样的问题


这里令a=‘\\0’字符,\\0对应的阿斯克码值是0.所以打印了XXXXX,C语言的整形和字符是相通的。

循环语句

循环语句可以让计算机重复的执行某些特定的语句,以完成较复杂的工作。

while循环

这是while循环的基本写法,括号内可以是表达式,变量名,数字等等,如果是数字的话要么循环会一直进行,要么循环不会进行。

这样的代码就不会死循环,因为我们人为设置了进入循环的条件,当a大于5的时候表达式就为假,就不会进入循环了,当然我们也可以是使用break来跳出循环,就像这样。

for循环:for循环是使用比较频繁的一种循环。

for循环的执行次序如下
1:先执行对变量初始化的语句
2:判断循环条件是否满足
3:若满足则进入大括号执行语句块/若不满足则循环结束
4:执行完语句块后执行语句1.
上面的是第一次for循环的执行步骤,下一次循环的时候就不会执行对变量初始化的语句了,其他的还是一样的。

这就是一个简单的for循环,当然我们也可以使用break来跳出循环。

还有一种循环叫do while循环

可以看到do while循环有一个不同于while循环和for循环特点,那就是它在进行第一次循环的时候并没有判断是否进行循环的条件,所以do while循环是一定会进行一次循环的,第二次循环是否进行则需要看循环条件是否满足。

这里要说所有的循环和选择结构都是可以互相嵌套使用的,比如再while里面使用if,都是可以的。

看得再多也不如上手写上几句代码,C语言的三大结构是很重要的,多练,多想才能够很好的掌握,让我们一起加油,像大厂进发!!!

如有错误恳请读者斧正。

以上是关于C语言入门(基础二)的主要内容,如果未能解决你的问题,请参考以下文章

ZZNUOJ_Java语言从非零基础到入门讲解

ZZNUOJ_Java语言从非零基础到入门讲解

ZZNUOJ_Java语言从非零基础到入门讲解

C语言单目和双目运算符的区别

C语言基础之指针入门

学习笔记C语言基础入门——这一篇就够了!