c语言中的副作用!!千万小心!
今天刚看完书上的副作用,博主觉得呢,副作用其实就在改变变量的值,也就是一个赋值操作!不过刚刚在知道上还是犯了错!!尴尬啊!!
大家都知道,c语言中的赋值操作符是自右向左结合的!!
下面有一个关于赋值中的副作用的例子:
#include <stdio.h>
int main()
{
int a = 3;
a += a -= a*a;
printf("%d\n",a);
return 0;
}
想到答案了吗?有没有人觉得答案是-3的呢?
小伙伴犯了和博主一样的错咯,正解应该是这样的:
a==3
第一步:a*a==9;
第二步:执行a -= 9;(注意这里有一个赋值操作,也就是我们说的副作用了)
结果:a==-6;
第三步:执行a += -6;
结果:a==-12;
所以执行结果应该是-12;上机试试吧!
毕竟实践是检验真理的唯一标准!!
c语言中的副作用!!千万小心!的更多相关文章
- C语言中的副作用、序列点、完整表达式
C语言中有个术语叫:副作用 副作用其实是对数据对象或文件的修改.(数据对象的定义是:用于存储值的数据存储区域) 例如语句 states = 50; 从C语言的角度来讲:这个赋值表达式的副作用是将变量的 ...
- 2.C语言中的关键字
1.auto 修饰局部变量,编译器默认所有局部变量都是用auto来修饰的,所以在程序中很少见到. 2.static 它作用可大了,除了可以修饰变量,还可以修饰函数,修饰变量,改变其作用域和生命周期,修 ...
- c语言中会遇到的面试题
预处理器(Preprocessor) 1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 ...
- C语言中内存分配那些事儿
C程序的内存结构 C语言的之所以复杂,首先它的内存模型功不可没.不像某些那样的高级语言只需要在使用对象的时候,用new创建.所有之后的事情,你不需要操心.对于C语言,所有与内存相关的东西,都需要熟悉, ...
- C 语言中的指针和内存泄漏
引言对于任何使用 C 语言的人,如果问他们 C 语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏.这些的确是消耗了开发人员大多数调试时间的事项.指针和内存泄漏对某些开发人员来说似乎令人畏惧 ...
- C语言中的指针和内存泄漏
引言 对于任何使用C语言的人,如果问他们C语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏.这些的确是消耗了开发人员大多数调试时间的事项.指针和内存泄漏对某些开发人员来说似乎令人畏惧,但是 ...
- C语言中关键字volatile的含义【转】
本文转载自:http://m.jb51.net/article/37489.htm 本篇文章是对C语言中关键字volatile的含义进行了详细的分析介绍,需要的朋友参考下 volatile 的意思是“ ...
- C语言中的宏定义
目录(?)[-] 简单宏定义 带参数的宏 运算符 运算符 宏的通用属性 宏定义中圆括号 创建较长的宏 较长的宏中的逗号运算符 宏定义中的do-while循环do 空操作的定义 预定义宏 C语言中常用的 ...
- C语言中关键字auto、static、register、const、volatile、extern的作用
原文:C语言中关键字auto.static.register.const.volatile.extern的作用 关键字auto.static.register.const.volatile.exter ...
随机推荐
- iOS 禁止边缘滑动返回
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
- c语言中->(间接成员运算符)的含义
写于2016年12月12日. "->"称为间接成员运算符. 总体注解:这个运算符与指向结构(sturct)或联合(union)的指针一起使用,用来指明结构或联合的的成员.假设 ...
- 与你相遇好幸运,mocha接口测试
var rest = require('restler');var assert = require("assert");var systemID;var userID; cons ...
- 【翻译】ASP.NET MVC 5属性路由(转)
转载链接:http://www.cnblogs.com/thestartdream/p/4246533.html 原文链接:http://blogs.msdn.com/b/webdev/archive ...
- Thinkphp5简单初体验
<?php namespace app\index\controller; use think\Controller; //引用think/Controller类 class Index ext ...
- python lambda
匿名函数和lambda: lambda [args1,[args2]] : expression python 使用lambda来创建匿名函数,匿名函数不需要以标准的方式进行创建,但是作为函数,它们也 ...
- Daily Scrum Meeting ——SixthDay
一.Daily Scrum Meeting照片 佳恺请假了...可能去约会了罢 二.Burndown Chart 欣慰,但是还是感到"鸭梨山大"! 三.项目进展 1.活动列表查询功 ...
- Windows远程连接CentOS桌面
VNC (Virtual Network Console)是虚拟网络控制台的缩写.它 是一款优秀的远程控制工具软件.VNC的基本运行原理和一些Windows下的远程控制软件很相像 VNC基本上是由两部 ...
- Codeforces Round #353 (Div. 2)
数学 A - Infinite Sequence 等差数列,公差是0的时候特判 #include <bits/stdc++.h> typedef long long ll; const i ...
- Android自动化测试-自动获取cpu和内存信息
CpuInfo.java package com.dtest; import java.io.BufferedReader; import java.io.FileWriter; import jav ...