ITPub博客

首页 > > > 先++还是先赋值?C语言这些知识一定要知道

先++还是先赋值?C语言这些知识一定要知道

作者:jasonhsp 时间:2019-12-06 10:49:19 0 删除 编辑

赋值运算符=

在C语言第一篇的时候,写过C语言中“=”不等于数学中的“=”而是叫做赋值这么一个概念。在C中“=”的作用就是赋值。就是将右边的值(右值)赋予给左边的值(左值)。那么当这个“=”的作用为赋值的时候,下面的语句就可以运行了。

int i=0;

i=i+1;

在数学中,i会等于0。但在C语言中,i等于1,它的意思是把i加上1再赋值给i。可以理解先临时声明一个int类型的变量它的值是i+1的和,然后再将这个临时声明的变量赋值给i。这样子,这个语句就通顺了吧。赋值的一个规定就是必须是右值赋值给左值。不能和数学的等于号一样自变量两边都可以。

如3=x这样是不许的。

另外的在赋值的时候最终得变量类型会变成左值的变量类型。

int i=0;

double z=1.2;

i=z;

结果会是i=1,而不是小数。浮点型赋值给整数型会截取小数部分,就是把小数部分去掉,并不是四舍五入。反过来int赋值给double类型会变成小数

C语言

+-*

再讲讲+-和*这三个运算符,它们的用法和结果和数学中一样,只不过要注意变量的类型转换。例如:如果你把一个double和一个int相加,会变成什么类型呢?答案是double类型,为什么呢?

简单的想想就好了,1.2+1在数学中会等于2还是2.2呢?看,很清晰了吧。那么字符和int相加呢?答案会是int。因为字符它是ASCII(一个码表),本身就是数字。只不过在表达的时候是不一样的,也因此加一个int会变成了int型。

+-*这三个运算符的类型转换都是一样的,知其一就可以用其二咯。

C语言中的除号/

让我们看看我们的键盘,我们键盘上是不是没有数学的“÷”号?那么问题来了,在C语言中,我们如何去用除以呢?在看看键盘是不是有“/”这个符号,和分母分子中间那斜杆是不是一样,这就是C语言的除号了。用“/”代替“÷”。这样子也行,但是和数学中的“÷”号还是有差别的。先举个例子

5/2;

在数学上,上面这个5除以2的结果是2.5,但是在C里面是2。因为在C语言里面,数据都是有分类型的,5和2都是整数,用"/"去计算也是得到一个整数,2.5去掉小数部分就为2了。如果要计算结果是小数要怎么办呢?那就把5换为5.0或者把2换成2.0,在C语言中的类型转换也用到了运算符上,常用的变换方向是int和double计算会变成double型,char和int计算会变成int型。更多之间的转换,读者不妨多定义几个变量,看一下课本,编译一下。

上一篇我们学了变量,那么我们用两个int类型的变量相除也就是整数型除以整数型,那要怎么办?别忘了,上篇我们也学到了类型转换,而这里我们可以用强制类型转换,简单介绍一下强制类型转换的用法。

int x=5; int y=2;

(double)x/y;

x这个变量变成了括号里的类型double。结果也就是2.5。

同样的(int)x就会把x变成int型。

取模运算符%%

这个也很简单,就是数学中的取余数。

8%%3也是表示在算8除以3后余多少。这个运算符有一个比较特殊的地方了,就是运算符的左右两边都只能是整数型,如果不是的话编译器就会报错。所以对于变量,%%左右两边也都得是整数型的。

int a=8;int b=3;

a%%b;

小结:以上的+-*/%%运算符结合和赋值运算就可以解决我们日常中数学的简单运算了。运算顺序遵守的是先*/%%后+-,从左往右,如果有其他需求可以加括号改变运算顺序。

先++?还是先赋值?

现在来讲讲开头中的i++和++i,这两个运算符其实都等价于i=i+1这个语句,只不过和赋值运算符配合起来有点差别。

int a=0,b=0;

int x=a++;

int y=++b;

如上,a会等于0,b等于1。第二条语句可以等价于下面这个

x=a;

a=a+1;

第3条语句可以等价于下面这个

b=b+1;

y=b;

这样理解起来是不是很清晰了?要记住的话,就记++在前还是在后咯。在前就先++。

还有一种就是+=,-=,*=,/=,%%=这五种。就举下+=的栗子

int i=0;

i+=1;

i最后会变成1。可以把它理解为下面这句代码

i=i+1;

其他四种类似于+=的运算符也是一样的用法。

只不过C语言把它简略了。这就是C语言简洁的一个栗子了。

还有最后一个运算符,sizeof(),这个看起来像函数,它确实也可以算是一个函数,作用是返回一个数值表示变量类型的字节数。

int x=sizeof(int);

int y=sizeof(double);

x会等于4,因为int类型有四个字节,y=8,double类型有8个字符。

对于这些算术运算符的特性就是这些啦~

这篇推文只讲了特性,并没有举很多栗子,因为编程还是需要动手才记得牢,我写出来,你看会了也就只是知道了,但是不一定会写,可以自己动手搭配不同的变量对这些运算符进行计算,加深理解~

还有其他一两种运算符:如比较运算符,会在后面的推文搭配其他内容讲解~

补充一个小知识点:转义字符\t。

之前见过\n这个转义字符的作用是换行,接下来介绍\t。这个的作用是缩进

printf("\tHello world\n");

这样的代码就会先在行首空四个空格的空间然后再打印"Hello world",再换行。



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/615/viewspace-3129372/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    342
  • 访问量
    2723