本文目录一览:
- 1、c语言编程中的副作用和序列点是什么意思??求大神回答。
- 2、c语言常量的应用
- 3、C语言里自加++和自减——放变量前和变量后有什么不同作用啊,分别怎么计算的?
- 4、c语言中只有= ++ --三个表达式有副作用吗
- 5、C语言中的副作用具体指的什么
- 6、c语言运算
c语言编程中的副作用和序列点是什么意思??求大神回答。
i=%d
输出一个整数
i=%-4d
输出一个整数,最小宽度为4字节,左对齐,右补空格
sum=%d\n
输出一个整数,\n表示换行
详情可百度printf格式
c语言常量的应用
C语言里常量可以用于任何无副作用的位置,比如非引用情况下的函数调用(比如输出函数),比如大多数运算中.
所谓的副作用,就是改变变量的值.比如赋值运算符对其左操作数有副作用,输入语句对输入的变量有副作用.
通俗得讲,值不会被改变的地方都可以用常量
C语言里自加++和自减——放变量前和变量后有什么不同作用啊,分别怎么计算的?
运算符在前,表示运算在前取值在后;运算符在后,表示运算在后取值在前
C语言是过程式编程语言。不同于“纯”函数式编程语言,C语言的表达式可以改变变量的值或外部状态,这被称为表达式的“副作用”(side effect)。++i 就是含有副作用的表达式,在对 ++i / --i 这样的前缀运算符(Prefix increment and decrement operators)求值的过程中,按定义发生了以下两步
改变变量 i 的值
确定运算结果是变量 i 改变后的值
而在对 i++ / i-- 这样的后缀运算符(Postfix increment and decrement operators)求值的过程中,则是以下两步
确定运算结果是变量 i 的值(此时 i 的值还没有改变)
改变变量 i 的值
c语言中只有= ++ --三个表达式有副作用吗
你的副作用是指改变变量的值?还有一堆的 op= (比如+=、-=、*=……)有这个作用。
C语言中的副作用具体指的什么
副作用,就是当你 赋值 或 更改 某数据 或 文件 时,语法上没有错误,但 产生 歧义,由于编译器的不同,或你编译时的 编译开关设置(选项设置,优化,不优化)不同,造成结果不同。
例如:int x=1, y; y = x++ + x++;
2个分号(即2个“序列点”)之间 的 同一个变量x 的值 被修改了 2次,(按理,只允许修改一次),这就可能带来 副作用。有的编译器 算得 2,有的编译器 得3。
凡会造成歧义的 写法就会带来 这种 “副作用”,即 不同编译器,或 不同的 编译选项设置得到的程序结果 不同。
c语言运算
C语言里面通过副作用来改变变量的状态
x++与++x的副作用都是x = x + 1;也就是说这两个表达式都会改变变量x的状态。使x里面的值增加1。但是这两个表达式的值是不同的. x++这个表达式的值是x原来的值,而++x这个表达式的值是加1之后的值。赋值语句是把赋值号右边的表达式的值赋给赋值号左边的变量。所以
y = x++;执行的时候,先把x原来的值作为赋值号右边的表达式的值赋给y,然后把x的值加1
而
y = ++x; 先把x的值加1,然后再把x的值赋给y
其实两个的区别就是赋值与副作用生成的顺序不同。
这样你该明白为什么y的值是5了吧!