不怎么重要的前言
上一篇我们大概的介绍程式的结构,也出了一个小作业,不晓得大家有没有试试看呢?
其实写程式真的没有想像中那么困难的,就像学英文一样好好的学习、理解文法,就可以很好上手了,希望大家不要害怕来跟着一步一步学习吧!
上次的小作业--列印三角形
方法一、
#include <stdio.h>int main(){ printf("*\n"); printf("**\n"); printf("***\n"); printf("****\n"); printf("*****\n"); return 0;}
方法二、
#include <stdio.h>int main(){ printf("*\n**\n***\n****\n*****\n"); return 0;}
方法一定不只这两种,也不是只有这两种方法才是对的,多去尝试吧!
运算子是什么?
可能大家对运算子这个名词有点陌生,所以我们来举个一定使用过的「+ - * /」,这个加减乘除大家一定是很熟悉的,这些符号在资讯领域我们会称它为运算子;那说到加减乘除的话不可不提的,就是被运算子运算的运算元了,运算元举简单的例子「3+2」来说,其中的「3」、「2」就是运算元,是会被运算子处理的资料。
可能大家现在有点头晕了,简单来说运算子负责运算、处理运算元(资料),而「3+2」这整个式子我们会称为运算式。
我们来用图解结论一下:
然后除了这些当然还有很多很多,就不再一一介绍了,接下来我们来测试看看吧!(其他详细资讯可以到wiki这里参考)
常用运算子测试与运用
基本的算术运算子以下只是简单的介绍与测试,欢迎自己改数字等等的尝试看看。
(1) + - * / % (加、减、乘、除、取余)
我们以下面的程式码来进行测试:
#include <stdio.h>int main(){ printf("%d\n", 5 + 2); printf("%d\n", 5 - 2); printf("%d\n", 5 * 2); printf("%d\n", 5 / 2); printf("%d\n", 5 % 2); printf("---我是分隔线---\n"); printf("%f\n", 5.0 + 2); printf("%f\n", 5.0 - 2); printf("%f\n", 5.0 * 2); printf("%f\n", 5.0 / 2); return 0;}
而上段程式码输出的结果会为:
其中如果不看printf语法(之后会再提),比较特别的大概是「%」了,它是用于取余数的运算子,所以「5%2」时会列印出无法被整除的余数「1」;而「/」则是因为在程式码中,若其运算的两个运算元都是整数,会预设输出可以被整除的商「2」。
而如果运算的两个运算元有一方或双方为浮点数(小数),输出就会为浮点数了,但输出为浮点数的情况下就不能使用「%」。
(2) + - (正负号)
我们以下面的程式码来进行测试:
#include <stdio.h>int main(){ printf("%d\n", + 2); printf("%d\n", - 2); printf("---我是分隔线---\n"); printf("%f\n", + 2.0); printf("%f\n", - 2.0); return 0;}
而上段程式码输出的结果会为:
(3) ++ -- (递增、递减)
这里我们就不多介绍了怕太混乱,有兴趣的朋友可以自行爬文,查查看它的使用方式。
(或是可以查看这个网页的介绍,写的很清晰也有解释前缀后缀时的差异)
以下範例若列印出1为ture、0则为false。
(1) > < >= <= (大于、小于、大于等于、小于等于)
我们以下面的程式码来进行测试:
#include <stdio.h>int main(){ printf("> 之结果:\n"); printf("%d\n", 5 > 2); printf("%d\n", 2 > 5); printf("%d\n", 5 > 5); printf("------\n"); printf("< 之结果:\n"); printf("%d\n", 5 < 2); printf("%d\n", 2 < 5); printf("%d\n", 5 < 5); printf("------\n"); printf(">= 之结果:\n"); printf("%d\n", 5 >= 2); printf("%d\n", 2 >= 5); printf("%d\n", 5 >= 5); printf("------\n"); printf("<= 之结果:\n"); printf("%d\n", 5 <= 2); printf("%d\n", 2 <= 5); printf("%d\n", 5 <= 5); printf("------\n"); return 0;}
而上段程式码输出的结果会为:
(2) != == (不等于、等于)
我们以下面的程式码来进行测试:
#include <stdio.h>int main(){ printf("== 之结果:\n"); printf("%d\n", 5 == 2); printf("%d\n", 5 == 5); printf("------\n"); printf("!= 之结果:\n"); printf("%d\n", 5 != 2); printf("%d\n", 5 != 5); printf("------\n"); return 0;}
而上段程式码输出的结果会为:
(3) && || (条件and比较、条件or比较)
我们以下面的程式码来进行测试:
#include <stdio.h>int main(){ printf("&& 之结果:\n"); printf("%d\n", (5 == 5) && (2 == 2)); printf("%d\n", (5 != 5) && (2 == 2)); printf("%d\n", (5 != 5) && (2 != 2)); printf("------\n"); printf("|| 之结果:\n"); printf("%d\n", (5 == 5) || (2 == 2)); printf("%d\n", (5 != 5) || (2 == 2)); printf("%d\n", (5 != 5) || (2 != 2)); printf("------\n"); return 0;}
而上段程式码输出的结果会为:
「&&」在左右条件皆为ture的情况,输出为ture,反之则为false;「||」在左右条件任一方为ture或两方都为ture时,输出为ture,反之双方皆为false时则输出false。
(4) ! (取反逻辑)
我们以下面的程式码来进行测试:
#include <stdio.h>int main(){ printf("! 之结果:\n"); printf("%d\n", (5 == 5)); printf("%d\n", !(5 == 5)); printf("%d\n", (5 != 5)); printf("%d\n", !(5 != 5)); printf("------\n"); return 0;}
而上段程式码输出的结果会为:
(1) << >> (位元左移、位元右移)
这个运算子大家应该陌生许多,在资讯领域中计算机(机器、电脑等等)通常是以二进制(0、1)的方式储存资料、运算、传输,详细的原因我们就不多讲,若有兴趣可以在自行查询,我们稍微图解一下这个运算子的使用方式。

我们以下面的程式码来进行测试:
int main(){ printf("<< 之结果:\n"); printf("%d\n", 4 << 1); printf("%d\n", 4 << 2); printf("------\n"); printf(">> 之结果:\n"); printf("%d\n", 4 >> 1); printf("%d\n", 4 >> 2); printf("------\n"); return 0;}
而上段程式码输出的结果会为:
虽然大概知道怎么使用,但大家可能还对位元运算有点模糊,下面我用小画家图解一下原因:
(对二进制有疑惑的朋友可以另外查看这个页面,这个是介绍数字系统的)
(2) & | (位元and运算、位元or运算)
我们以下面的程式码来进行测试:
#include <stdio.h>int main(){ printf("& 之结果:\n"); printf("%d\n", 0 & 5); printf("%d\n", 0 & 10); printf("%d\n", 15 & 5); printf("%d\n", 15 & 10); printf("------\n"); printf("| 之结果:\n"); printf("%d\n", 0 | 5); printf("%d\n", 0 | 10); printf("%d\n", 15 | 5); printf("%d\n", 15 | 10); printf("------\n"); return 0;}
而上段程式码输出的结果会为:
运算子跟上一个一样都是位元上的运算,而且是每个位元间的运算,都把数字转成二进制会比较好理解,前面可能没有把and、or说清楚,我们稍微图解一下。
第一步骤:我们先来了解and跟or的规则
a. and
第二步骤:知道了and、or的规则我们再来把进制转换一下。
第三步骤:转换完二进制后再进行「&」跟「|」的运算
举四个例子:
a. 0 & 5
b. 15 & 10
c. 0 | 5
d. 15 | 10
(1) = (设为某值、赋值)
这个运算子会在往后频繁的使用到,所以一定要知道这个用法,在资讯领域中「=」的用法跟数学定义是不一样的,会用来赋予某资料一个值,虽然我们还没有教到变数,不过在下一篇会提到,这里我们先将就着看图解。

我们以下面的程式码来进行测试:
#include <stdio.h>int main(){ int data; data = 777; printf("%d\n", data); data = 8787; printf("%d\n", data); return 0;}
而上段程式码输出的结果会为:
可以看到当「data = 777;」时,data变数就存进了777,列印data时显示的结果就是777;而当我们第二次赋值时,「data = 8787;」会覆盖掉上次的值,在列印data时显示的就变成8787了。
(2) += -= *= /= %= (运算后赋值)
我们以下面的程式码来进行测试:
#include <stdio.h>int main(){ int data; data = 2; printf("%d\n", data); data += 3; printf("%d\n", data); return 0;}
而上段程式码输出的结果会为:
其实这类的运算子是由两个步骤组成,先进行算术运算、最后再赋值,就不多做其他的例子了,有兴趣可以自行尝试看看这些运算子,而+=时如下图解。