精华内容
下载资源
问答
  • 自增自减运算

    2020-07-05 19:30:12
    自增自减运算 小胖子正在学习汇编语言,汇编语言里面有自增和自减指令,叫inc和dec指令,其实C语言里面也有自增和自减运算的,即++和—运算,但这些指令或者运算都是有范围,现在小胖子碰到了很长很长整数,小...

    自增自减运算

    小胖子正在学习汇编语言,汇编语言里面有自增和自减指令,叫inc和dec指令,其实C语言里面也有自增和自减运算的,即++和—运算,但这些指令或者运算都是有范围的,现在小胖子碰到了很长很长的整数,小胖子脑子一转,很快就想出来。现在请你也实现这个自增和自减运算。

    Input

    输入有多组,第一行是测试数据的组数。对于每一组测试数据,共有两行,其中第一行是一个整数M(0表示自减运算,1表示自增运算);第二行是一个很长的整数,它的位数不超过10000位,输入一定符合数学规定的要求并且不会有多余的字符。

    Output

    输出只有一行。

    Sample Input

    2
    0
    100
    1
    200
    

    Sample Output

    99
    201
    

    代码

    t=int(input())
    for i in range(t):
        m=int(input())
        a=int(input())
        if m==0:
            a-=1
        else:
            a+=1
        print(a)
    
    展开全文
  •   在C++中,前缀++或- -运算优先级要比后缀低,且在《C++运算符优先级和结合性》表中与指针运算符*属于同组,即优先级和结合性相同。 ​ int a[5]={1,2,3,45}; ​ int *p=a; 1. *p++   根据结合性优先级...

      在C++中,前缀++或- -运算优先级要比后缀的低,且在《C++运算符的优先级和结合性》表中与指针运算符*属于同组,即优先级和结合性相同。

    ​ int a[5]={1,2,3,45};

    ​ int *p=a;

    1. *p++
      根据结合性优先级法则,后缀++优先级高于*指针运算符,因此该表达式等价于*p(++),后缀++先使用值,然后将值自增1,则表达式可解释为int *pt,pt=p,p++,*pt; 于是

    ​ cout<<*p++; //输出结果为1

    2. (*p)++

    ​ 先对p解除引用,然后将指针p本身自增1,增量单位与p本身指代的内容类型一致,则

    ​ cout<<(*p)++ ; //输出结果为1

    3. *++p

    ​ 前缀++和*优先级相同,p只能和++运算符结合,于是该表达式等价为*(++p),先将p自增1,再解除引用,则

    ​ cout<<*++p; //输出结果为2

    4. ++*p

    ​ 先解除引用,后对*p的值自增1,于是

    ​ cout<<++*p; //输出结果为2==>++a[2]==>++1

    展开全文
  • 导读运算符多操作灵活是C语言一大特色在诸多运算符中最容易出错便是自增自减运算符C语盲允许在一个表达式中使用两个以上赋值类运算这种灵活性使程序简洁但同时也会带来副作用本文以VC6.0编译系统为标准详解...
  • java中++,--操作和c语言++,--操作区别

    转载请注明出处:http://blog.csdn.net/j903829182/article/details/38396231

    今天看到java面试宝典里面有一道题目是这样的:




    答案是0,我开始也有疑问,后来看到后面说到java的中间缓存变量,后来到网上查了查,终于理解了,是什么意思了。请看下面的代码和解释:

    package com.wj.demo;
    
    public class Test1 {
    
    	/**
    	 * @param args
    	 */
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		int j=0;
    		for(int i=0;i<100;i++){
    			
    			j=j++;
    			/*
    			 *
    			 java中间缓存变量的机制,在java中,执行自增运算时,会给每个自增操作分配一个临时
    			 变量,如果是前缀加(++i),就会先自加1后赋值给临时变量;如果是后缀加(i++),就会
    			 先赋值给临时变量后自加1.运算最终使用的,并不是变量本身,而是被赋值了得临时变量。
    			 所以上面的j=j++;等于如下操作:
    			 temp=j;
    			 j=j+1;
    			 j=temp;
    			  */
    		}
    		System.out.println("j="+j);
    		
    	}
    
    }
    
    程序运行的结果是0,你可以测试下。

    当然这里用的是++运算,但是对于--运算Java中的中间缓存变量机制也适用。


    当我看到这里的时候,我想起了c和c++里面不是也有++,和--操作吗?我就查了下资料,果然发现java中i++,--运算和c,c++里面的++,--运算,有很大的区别。

    我们来看看要是用c写一样的代码会出现什么情况:

    #include<stdio.h>
    int main(){
    
    	int i, sum1, sum2;
    	i=0;
    	sum1 = (i++)+(i++);  
    	printf("sum1=%d\n",sum1);  
    	
    	i=0;
    	sum2=(++i)+(++i);  
    	printf("sum2=%d\n",sum2);  
    
    	int j=0;
    	for(i=0;i<100;i++){
    	
    		j=j++;
    	}
    	printf("j=%d\n",j);
    	return 0;
    }

    输出结果:



    我们可以看到,输出的结果是100,这又是为什么了?

    因为在c语言中,每个变量在它的生命周期内的每个时间点都只能有一个唯一的值。因此变量在每一次自增运算时,变量所对应内存区域的内容就被重写了。所以出现的时100的结果,也就是说在进行j=j++操作的时候,先把j=j进行操作,然后j=j+1;因为在生命周期内每个时间点都只能有唯一的一个值,所以最后j的值应该为j=j+1;用这个方式你可以分析下上面的代码sum1和sum2的值是怎么来的。这个原理对c和c++的--操作同样适用。


    因此在有++,--操作的运算符的语言里面一定要慎重使用,能不用,则最后不用,容易出现问题。


























































    展开全文
  • 刚开始学习的时候, 自己虽然知道自增自减怎么运算...自增自减的常见运算形式 ** //自增(++)自减(--)的运算规律是; //加加在前:给变量加1后再使用该变量 //加加在后:使用完该变量后再加一。 public cla...

    刚开始学习的时候, 自己虽然知道自增自减怎么运算的,但遇到具体代码执行时,还是被绕进去了一脸懵逼的感觉。今天花了一点时间弄懂了。虽然这是一个很小的知识点,但也有它的脾气。下面的代码详细讲述了自增,自减的内部运算机制。

    **

    自增自减的常见运算形式

    **


    //自增(++)自减(--)的运算规律是;
    //加加在前:给变量加1后再使用该变量
    //加加在后:使用完该变量后再加一。
    public class 左结合 {
    	public static void main(String[] args) {
    		int i=1;
    //		答案是1,,此刻输出的是i++整体,并未使用该i++后的值,只是输出i赋值后的值
    //		也就是说给i++赋值了(1++),还是1
    		System.out.println(i++);
    //		答案是3,根据i++的使用规律先加1后使用原则,上一个输出i++后,i的值已经变成了2.
    //		根据++i的使用规则,先使用后加1。也就是说2使用后加一输出,所以++i为3.
    		System.out.println(++i);
    //		答案为4,3使用完后加1,++i为4整体输出。
    		++i;
    		System.out.println(i);
    		i--;
    //		4-1=3,然后整体输出
    		System.out.println(i--);
    //		答案为2,上一个i--输出后,i的值已经变成2
    		System.out.println(i);
    //		答案为1,赋值后减1,然后输出。
    		--i;
    		System.out.println(i);
    	}
    }
    结果是:
    1
    3
    4
    3
    2
    1
    

    自增自减的普通练习

    public class practice {
    	public static void main(String[] args) {
    		int i=3;
    //		s=3+4+5
    		int s=(i++)+(i++)+(i++);
    		System.out.println("s="+s+",i="+i);
    		i=3;
    //		s=4+5+6;
    		s=(++i)+(++i)+(++i);
    		System.out.println("s="+s+",i="+i);
    	}
    }
    运行结果是:
    s=12,i=6
    s=15,i=6
    
    展开全文
  • 变量单独进行自增自减运算时,无论自增自减运算符在变量前,还是在变量后,效果都是一致。 public class Ppn{ public static void main(String[] args){ int n = 0; ++n; System.out.println(n); } } ...
  • 自增自减 ++自增运算符:如a++,++a都等价于a = a + 1; –自减运算符:如a–,–a都等价于 a = a -1; ++a和a++区别 虽然++a和a++等价结果一样,但是运算过程不同,a++ 是先使用a值,然后再对a做加1处理,+...
  • 今天看到java面试宝典里面有一道题目是这样:答案是0,我开始也有疑问,后来看到后面说到java中间缓存变量,后来到网上查了查,终于理解了,是什么意思了。请看下面代码和解释:package com.wj.demo;public ...
  • JavaScript“自增”运算符与表达式 递增运算符(++)是一个一元运算符,该运算符可以将操作数进行递增操作,即每次增加1....递增运算符(自增运算符)根据其相对于操作数位置有两种不同递增方式。 1. “...
  • Java中的自增自减运算

    2020-10-23 20:43:23
    20201023 自增自减运算符使用 */ public class Demo005{ public static void main(String[] args){ int a = 100; System.out.println("a:" + a); a++; System.out.println("a:" + a); //输出自加后...
  • 2、前缀自增自减法(++a,--a):先进行自增或者自减运算,再进行表达式运算。 3、后缀自增自减法(a++,a--):先进行表达式运算,再进行自增或者自减运算 实例: 实例 public class selfAddMinus{ public static ...
  • python ++ ,--是普通正负号,不是自增自减运算 a = 1 print(++ a) print(id(a)) print(id(++ a)) 结果 1 1628963312 1628963312 a=1 ,++a结果是1,不是自增 a 和++a地址一样 ...
  • Problem D: 自增自减运算 Description C语言中有自增运算++、自减运算–,并且可以前置和后置。 编写一个程序:对输入一个整数a,输出a++、a–、++a、–a值。 Input 一个整数a,a是很小整数。 Output 输出为5...
  • 自增自减的理解和运算优先级 理解 自增,自减 自增就是变量自动+1,就是我们所说的 i++ ,++i; 自减就是变量自动-1, 就是我们所说的 i-- ,-- i; 代码 int mun = 7; int s=mun++; //mun++=mun+1=8 Console....
  • C++自增自减运算

    2020-11-29 21:46:23
    自增运算符++,自减运算符– 自增运算符有两种写法:i++,++i,它们区别在于: i++是先使用i再将i加1 ++i是先把i加1在使用i 示例: #include <stdio.h> int main() { int a = 1, b = 1, n1, n2; n1 = a++;...
  • 在 PHP 官方手册中写道:PHP 支持 C ...换句话说:递增/递减运算中,不会把操作数转换成整数后再运算。如果运算数是布尔值,则直接返回结果。递增/递减布尔值:$a=TRUE;var_dump(++$a);//bool(true)$a=TRUE;v...
  • 在 PHP 官方手册中写道:...换句话说:递增/递减运算中,不会把操作数转换成整数后再运算。如果运算数是布尔值,则直接返回结果。递增/递减布尔值:$a = TRUE;var_dump(++$a); // bool(true)$a = TRUE;var_du...
  • 自增++符号在前,则是先做自增再赋值,如果++在后则是做了赋值再做自增运算,--同理 如: int k = 8; int j = ++k; System.out.println('\n' + "k = " + k); //输出 k = 9 System.out.println("j = " + j); //...
  • C语言自增自减运算 恶心问题

    千次阅读 2019-04-08 16:49:51
    c语言中,自增(++)和自减(–-)运算是很有c语言特色(恶心)一种运算符。 可以按教科书那种记: b = a++ 是先赋值后运算,即先 b=a,然后 a++。 b = ++a 是先运算后赋值,即先 ++a,然后 ++a。 例子: 好好...
  • 自增自减运算

    2015-12-04 21:48:10
    自增自减运算 自增自减主要有以下两种作用: 1)、无论是前置、后置,++都是自身变量加1,——都是变量减1; 2)、当作为表达式时,前置和后置就有区别了。前置运算符结果是加1或减1之后结果,前置运算符...
  • 自增自减运算符存在于C/C++/C#/Java/Python等高级语言中,它作用是在运算结束前(前置自增自减运算符)或后(后置自增自减运算符)将变量值加(或减)一。相较于这些语言中+=和-=运算符,自增运算符更加简洁,且可以...
  • 自增自减运算

    2015-10-17 20:54:40
    ++:  在原来基础上+1 ... 在原来基础上-1 ... 后缀:先用原来值参与运算,再自增自减    无论是前缀还是后缀,其值最终都会自增自减 使用注意:只能用于标准类型
  • ``` $x = 5; $y = 6; $foo = $x++ + $x--; ``` 这个运行结果是11,计算顺序是 先自增...自增自减相对于加号减号来说优先级相同吗?对于乘除和取余等运算符号来说呢? 来个大神解释一下。。。把自己绕晕了。。。
  • 这两运算就是一祸害,删了多好。反正编译器在优化时候会自己生成自增自减运算指令,不劳咱们操心。 转载于:https://www.cnblogs.com/huangfeidian/p/3185708.html...
  • 深度剖析C语言自增自减运算

    千次阅读 2012-07-25 21:05:05
    在C语言学习中大家都会遇到C语言的自增自减运算,很多人多对其运算赶到迷惑,下面通过简单几分钟分析让你对自增自减运算了如指掌,不再迷惑。 自增运算符就是++,自减就是--,两个运算相同以自增为例。 自增...
  • js自增自减

    2020-03-21 11:10:05
    JavaScript中的自增自减 这几天在逆战班学习了自增自减,怕忘记就来写写博客加深印象。 自增和自减都是一元运算符,++为自增,–...自增自减的运算规则:变量在前边,加号在后边,先取出变量的值,参与其他运算,再...
  • 测试算术运算,取模、自增自减运算 */ public class Test_operator { public static void main(String[] args) { byte a = 3; int b = 14; //short c = a+b;报错 int d = a+b; float e = 3.15f; double f ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,414
精华内容 965
关键字:

自增自减的运算