关于i++ ++i的自加实验 C语言

C语言自加实验(VC和VS的结果不同)

其实这个确实没什么必要吧,但是二级需要啊!而且我在qq群里经常看见有人问这个,所以,就写这个自加的一些实验。

一、自加与函数传参

1、 VC
	前置++ 影响前面所有的参数包括自己  不对后面的参数产生影响
	后置++ 不对任何参数产生影响
2、 VS
	后置++不会对自己有影响 但对前面的后置++有影响,且对所有的前置++有影响
	前置++  对自己有影响  对前面的后置++有影响	且对所有的前置++有影响
#include<stdio.h>
void fun(int a,int b){
	printf("a=%d,b=%d\n",a,b);
}
int main(){
	int a=1,b=1,c=1;
	fun1(a++,++a,a++);
	fun1(++b,b++,b++);
	fun1(c++,++c,++c);
	return 0;
}

VC(左)和VS(右)
左边是VC右边是VS

二、 自加的赋值

在VC和VS里面后置++没效果
在VC里面前置++   只有最前面的两个变量会互相影响   其他的变量都只影响自己和后面的变量

在VS里面前置++会对所有的变量产生影响
  int a=1;
  int d=a++ + ++a + a++ + ++a;
  VC:d的值为:9;
  VS:d的值为:12
  int d=a++ + a++ + a++ + a++;
  VC:d的值为:4;
  VS:d的值为:4

书上说这种行为是未定义行为,自加是根据编译器的不同而不同,平常这种自加基本是看不到的,也只有在二级C语言里面能看到一些,不知道以后这种题目会不会消失。反正我们是不能写这种自加的。嗯,只是为了二级而已。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值