导航:首页 > 源码编译 > 预编译和自家自减运算符

预编译和自家自减运算符

发布时间:2022-05-18 20:41:42

⑴ 自增自减运算符

这是一类特殊的运算符。

自增运算符++和自减运算符--对变量的操作结果是增加1和减少1。例如:

--Couter;

Couter--;

++Amount;

Amount++;

运算符在前面还是在后面对本身的影响都是一样的,都是加1或者减1,但是当把他们作为其他表达式的一部分,两者就有区别了,并且自增运算符更加简洁,且可以控制效果作用于运算之前还是之后,具有很大的便利性。

(1)预编译和自家自减运算符扩展阅读:

基本语法

自增运算符 ++ 使操作数的值加1,其操作数必须为可变左值(可简单地理解为变量)。对于自增就是加1这一点。

++ 可以置于操作数前面,也可以放在后面,如:

++i;

i++ ;

++i表示,i自增1后再参与其它运算;而i++ 则是i参与运算后,i的值再自增1。

自减运算符--与之类似,只不过是变加为减。

⑵ 关于C语言中自增自减运算符

#include "stdio.h"
main(){
int i=5,j=5,p,q,k,m;
p=(i++)+(i++)+(i++);
k=(++j)+(++j);
m=(++j);
q=k+m;
printf("%d,%d,%d,%d,%d,%d",p,q,i,j,k,m);
}
15,22,8,8,14,8

结果:15,22,8,8,14,8 执行结果是这样的:
1、q表达式读取第一个(++j) 压入栈中(++j=6),j=6;
2、再读取+,再读取第二个(++j)压入栈中(++j=7),j=7;
3、再读取+,这时发现算符优先级是平级的,故取出他们做加法,他们都读取同一个j值(相同的名字指向同一地址),此时j=7,所以成了q=7+7+(++j);
4、在读(++j)压入栈中,(此时++j=8) ,j=8所以是q=7+7+8=22..

5、如果改成:q=(++j)+(++j)*(++j);后面的加号改为乘法。肯定是
q=8+8*8;优先级不同了,自己思考啊·······························
代码:
#include "stdio.h"
void main(){
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)*(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
结果:15,72,8,8

⑶ c语言关于自增自减运算的问题

你看这个代码。先求的p结果是14 , 按我们算应该是13,但编译器是在编译过程中认为()里面的优先级的相同的,而且都是先自增,所以编译器就把先把这两个自增计算了,然后就是7+7了。

而下面是一样的,前二个也是同时进行。后面才进行也就是7+7+8,最后为22. (我以前也问过,老师用编译后的汇编代码给我解释的)

⑷ 关于自增自减运算符

这是一类特殊的运算符,自增运算符++和自减运算符--对变量的操作结果是增
加1和减少1。例如:
--couter;
couter--;
++amount;
amount++;
看这些例子里,运算符在前面还是在后面对本身的影响都是一样的,都是加1或
者减1,但是当把他们作为其他表达式的一部分,两者就有区别了。运算符放在
变量前面,那么在运算之前,变量先完成自增或自减运算;如果运算符放在后
面,那么自增自减运算是在变量参加表达式的运算后再运算。这样讲可能不太
清楚,看下面的例子:
num1=4;
num2=8;
a=++num1;
b=num2++;
a=++num1;这总的来看是一个赋值,把++num1的值赋给a,因为自增运算符在变
量的前面,所以num1先自增加1变为5,然后赋值给a,最终a也为5。b=num2++;
这是把num2++的值赋给b,因为自增运算符在变量的后面,所以先把num2赋值给
b,b应该为8,然后num2自增加1变为9。
那么如果出现这样的情况我们怎么处理呢?
c=num1+++num2;
到底是c=(num1++)+num2;还是c=num1+(++num2);这要根据编译器来决定,不同
的编译器可能有不同的结果。所以我们在以后的编程当中,应该尽量避免出现
上面复杂的情况。

java的自增运算符和自减运算符是什么

自增(++)和自减(--)运算符
在JAVA语言中存在着很多运算符,但是在实际开发中我们或许很少用到它们,在初次学习中却时常出现它们的身影,对于这些运算符的含义和用法,是否还记得呢?下面让我们来看看下面几段Java代码:
int i = 0;
int j = i++;
int k = --i;
这段代码运行后,i等于多少?j等于多少?k等于多少?相信对于这段代码应该没有问题,因为很简单。结果为:i=0,j=0,k=0。那下面这段呢?
int i = 0;
int j = i++ + ++i;
int k = --i + i--;
代码执行后i、j、k分别等于多少呢?答案为i=0,j=2,k=2。不知道对这个结果有没有疑问呢?起初我第一眼扫过去的结果和真正的执行结果是不同的,也就是我判断错了。也许会问,怎么这么简单的问题都弄错呢?是的,有时稍微不注意真会出错。这看的就是我们对Java运算符优先级的认识。来,继续看下面这段代码:
int i=0;
System.out.println(i++);
这段代码运行后输出结果是什么?0?1?答案当然是i=0。这个是毋庸置疑的。接着看下面这段代码:
float f=0.1F;
f++;
double d=0.1D;
d++;
char c='a';
c++;
上面这段代码可以编译通过并执行吗?答案是肯定的。如果此时对上面说的都没有问题,那么就可以说明对自增自减运算符已经掌握的很好了。现在就让我们还回顾一下相关知识:
自增(++):将变量的值加1,分前缀式(如++i)和后缀式(如i++)。前缀式是先加1再使用;后缀式是先使用再加1。
自减(--):将变量的值减1,分前缀式(如--i)和后缀式(如i--)。前缀式是先减1再使用;后缀式是先使用再减1。
自增与自减运算符还遵循以下规律:
1. 可以用于整数类型byte、short、int、long,浮点类型float、double,以及字符串类型char。
2. 在Java5.0及以上版本中,它们可以用于基本类型对应的包装器类Byte、Short、Integer、Long、Float、Double、Character。
3. 它们的运算结果的类型与被运算的变量的类型相同。

⑹ 求问编程中自增自减运算符的运算规则

首先声明不同的编译器对于++运算的结果差异性很大,下面的解释仅仅针对你用的VC6.0;

1. 教科书上明确解释:++在前,则是先运算自加;++在后在在运行完当前运算后再进行自加;

2.你的第一个程序其中a=x+(x++)+(++x)可以分解为:

3. 你的第二个程序中x=x+(x++)+(++x)可以分解为:


再次声明,不同的编译器结果不同,我曾经验证过,例如在Tc2.0中a=x+(x++)+(++x)是这样解释的:


这种东西理解一次就足够了,工作后基本不会用这种方式来写的,在学校里考这些东西,现实意义非常小。

⑺ 计算机二级C语言 关于自加自减运算符的问题

是这样的,m++,++在后面就先引用(这里是引用输出),然后再自加,
++m,就相反了,要先自加,然后再引用。比如:int m=2;a=m++就是先把m=2赋值给a,然后再m自加。而如果是a=++m,就是先m+1,然后把3赋给a。

你上面那个printf("%d%d",m++,++n);就是先输出m(12)然后m=m+1=13,先n=n+1=35然后输出35,第二个printf("%d%d\n",n++,++m);先输出n,由于上一个已经加1得35,所以这里输出35,然后n=n+1,m先自加1然后再输出就是14了。

⑻ C语言运算符操作(自增自减)

按照编译器原理解析的话,这个句子应该这样解析的,(k++) + ( j ) = 8, 这里我们不说优先级的问题,你可以查下~ 为什么你算出是9呢,我觉是你忘记了一个重点就是k++,这个是后加,也就是在整个表达式结束后k才加1,而在计算过程中k还是算原值5的,一般来说自加自减在单一的表达式中无先后之分,但是一旦到了复杂表达中就有了先后之分了

⑼ C语言自增自减运算符用法

C语言的前置++和后置++,称为自增运算符
前置--和后置--称为自减运算符,下面以自增运算符的区别来加以介绍,自减类似

如果单独写 自增运算符为一个语句,二者没有区别
++i; 和 i++; 都是让i+1赋值给i
但是如果把自增运算符写入到另外表达式中二者就有很大区别了

例如
i=5;
j=i++;
执行后i为6,j为5
i=5;
j=++i;
执行后i为6,j为6

阅读全文

与预编译和自家自减运算符相关的资料

热点内容
劫掠命令 浏览:371
单片机每个程序的含义 浏览:748
学好玩命令方块 浏览:953
手机解压两个分开的压缩包 浏览:963
程序员想调薪怎么和领导说 浏览:856
编译的底层实现 浏览:550
32位机器上编译出64的动态库 浏览:924
python办公数据类型 浏览:913
传统8051单片机介绍 浏览:628
app拉新公司如何运营 浏览:618
枪法pdf 浏览:62
ios如何设置安卓虚拟返回键 浏览:697
mysql命令执行sql 浏览:97
惠普内嵌服务器怎么打开 浏览:413
cmd命令查看网络 浏览:819
程序员秘密 浏览:932
如何宣传app引流 浏览:73
图说红楼梦中央编译 浏览:173
php查询赋值 浏览:271
java程序员面试宝典第四版pdf 浏览:931