老赖学iOS开发----C语言运算符/表达式

一.标识符
标识符就是给变量,数组,函数指针,结构体,共用体等用一些有序字符序列起的一个名字.那问题就来了,用来干嘛的呢?
先来说说如何定义一个变量,格式如下
–>数据类型 标识符;
–>数据类型 标识符 = 常量/变量/表达式;
显而易见,这里的标识符,就是我们要起的变量名,例如:int a = 5;//表示开辟了一个4字节的空间,名字叫a.
‘=’ 是赋值号,将右边的常量放在这个新开辟的空间中.
那么,标识符的命名,可以随便取名吗?答案肯定是不行!C语言中有以下的标识符命名规则,老赖我记得不知道全不全:
1.只能包含字母,数字,下划线(_)
2.不能以数字开头
3.不能是关键字(int,float 这些系统已经占用了,C语言中,关键字和保留字都是小写的)
4.严格区分大小写
5.见名识意(老赖我自己加的,你起的名字,让别人能看得懂,你说int name的name是表示年龄的变量,保证有人打死你!)

在上面的定义变量的格式中,引出了变量的初始化和变量赋值两个概念.
–>变量的赋值:先声明变量,在给变量赋值 ;
例子: int a ;//声明有这么一个变量a;
a = 3; //给这个变量a,赋值3;
–>变量的初始化:是在声明变量的同事给变量赋值;
例子:int a = 3;//声明有个变量a,并且a 被赋值了3;
一个变量可以多次赋值,结果是最后一次赋的值.

二.输入和输出

还记得咱们上篇博客中,咱们打印了一个Hello World!
记性好的朋友,应该记得有这么一个单词”printf”,没错,这个就是输出函数.
输出:printf(“格式控制符”,输出列表);

printf(“输出一段话”);

printf(“\n”);

printf(“%d”,3);

printf(“\n”);

printf(“%c”,’a’);

上面的例子,我们可以观察到,printf函数可以直接打印常量,格式是:printf(“*“)
如果打印变量的话,就要用printf(“格式控制符”,输出列表)
有个需要死记硬背的,\n 是转义字符,表示换行.不解释,眼下记住就行了.
变量的格式控制符,跟后面的变量是要对应的:

%d  --> 输出十进制整数
%o -->  输出八进制整数
%x  --> 输出十六进制整数
%f  --> 浮点数
%c  --> 字符
%s  --> 字符串
%p  --> 输出内存地址
:
老赖补充一点儿,%m.nf这样的控制符,以后肯定会用到,m和n是两个整数.

比如,%0.2f
–>m=0表示最小字符宽度,当实际字符的个数小于该值时,输出会自动补空格,m为正数时数字右对齐,负数时左对齐
( 例如%3d 对应 1的话,就是##1 %-3d 对应 1 的话,就是1## (#表示空格)
当实际的显示大于m,那就按实际输出,也就是m无意义了
)
–>n= 2表示小数的保留位数.

printf("-->%0.2f",23.45678);
打印结果就是:-->23.46

那有好朋友要问了,我不能只打印吧,怎么往程序中输入一些东西呢?
问的好!C语言之父丹尼斯·里奇跟你想一块儿去了!
输入函数:scanf(“格式控制符”,输入列表);

这里老赖要友情提醒一下,输出的时候,我们可以这样printf(“–>%d”,45);加上–>也是老赖的个人爱好,旨在控制台上好标识出来,方便一眼就看出来.
But!输入函数中,除了格式控制符外,不要增加任何普通字符!切记!
另外!还要在输入列表的变量前,必须!必须!必须加上 & 这个符号(取地址符)!

例如:

int a;
scanf(“%d”,&a);
printf(“–>%d”,a);

打印结果就是:

9
–>9Program ended with exit code: 0

首先打印控制台,显示一片空白,那是等待我们输入,我们输入9后回车,程序才会继续往下走,要不然,scanf会等我们一直到老!

三.表达式
表达式:由常量,变量和运算符组合成的式子.
例如: int a ;
a= 5+8;//这就是一个表达式
如何看或者说读一个表达式呢?
1.看表达式的功能
2.看表达式的值
四. 运算符:
算术运算符
+ –> 加
- –> 减
* –> 乘
/ –> 除
[注]除号两边都为整形时,结果为整形,除号两边有一边为浮点型时,结果为浮点型.
% –>取余(模)
例如:
4%2 = 0;
4%3 = 1;
3%4 = 3;

简单说就是取余数.[注]:1. %取余符号两边必须为整形
2.左边的数小于右边的数,则结果为左边的数

自增/自减运算符(++ –)

这两家伙并不是想的那么高大上,一开始设计的初衷是为了节省内存资源,现在的设备不需要这么节省,去牺牲可读性.
功能:声明一个整形变量I,无论是I++还是++I,功能都是让变量+1;
不过有个比较绕的地方,取值的时候要看情况了:i++或者++i直接参与运算的时候例如
a= i++;或者a = ++i;
i++,加前取值,先取变量的值参与运算,然后变量的值再加1;
++I,加后取值,先将变量的值加1,再取变量的值参与运算;

键入i初始化等于0,
则a = i++后,a = 0,I = 1;
a = ++I后,a = 1,I = 1;
我们可以用代码来证明:

#include <stdio.h>

int main(int argc, const char * argv[]) {

    int i = 0;
    int a;

    a = i++;
    printf("-->i = %d\n-->a = %d\n",i,a);
    }
   打印结果是:
   -->i = 1
   -->a = 0 
   Program ended with exit code: 0
关系运算符(比较两个数的大小,结果:真/假)

> 大于符号 例子: 1> 3 结果为0,假
< 小于符号 例子: 1<3 结果为1,
>= 大于等于 例子: 1>=3 结果为0,假
<= 小于等于 例子:1<=3 结果为1,真
== 等于符号 例子: 1==3 结果为0,假
!= 不等于符号 例子: 1!=3 结果为1,真

逻辑运算符(比较两个式子的关系,结果:0为假,一切非0 的数据皆为真)
&& : 逻辑与 —->两边都为真,结果为真,一边为假,结果为假
|| : 逻辑或 —->两边都为假,结果为假,一边为真,结果为真
! : 非 —-> 非假即真,非真即假
条件运算符(三目运算符?:)
? : 三目运算符(没错,一个问号和一个冒号,组成了三目运算符)
格式:
表达式1 ? 表达式2 : 表达式3;
逻辑关系:先计算表达式1 的值,值为真(不为零就是真,管你等于1还是10000也不局限数字),则运行表达式2;如果值为假(0),则执行表达式3.
老赖理解之:表达式2和表达式3打赌,赌表达式1是否为真,谁赢系统就运行谁!
符合运算符
1.简单赋值(=)
有小哥估计忍不住要问了,这个”=”与关系运算符中的”==”不一样吗?
老赖微笑的说,指定不一样,并且==更相当于咱们日常接触的等号,就是左右是不是相等的意思.
而这个=号,在C语言里,则表示赋值运算,即把等号右边的值赋值给等号左边的变量.

2.复合算术赋值(+=,-=,*=,/=,%=)
一看例子就知道怎么玩的了:

int a = 5;
a += 5;等价于a = a + 5;

意思就是左边变量的值,先跟右边表达式的值进行相应的算术运算,然后把运算后的结果,赋值给左边的变量.

逗号运算符(略)
运算符的优先级(略,还是贴张图片吧)
运算符的优先级

好了,完事,收工,下篇:要讲流程控制了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章