Ⅰ c语言 sum+=i++;和 sum+=i;++i; 那个运算的速度更快
从现代程序员的角度来说你可以认为没什么区别,就算是++i和i++也可以认为没什么区别
你从理论上可能有无数人无数书会告诉你怎么样怎么样,但是其实现代编译器已经可以完全优化这些了,就好像一般看上去好像i++比++i更费时间,实际上也有人研究VC的汇编代码其实前者的x86指令编译出来更少
所以总体来说研究这个没什么特别的意义,其实从编程的角度来说后者更好,世界上99.9%的情况不需要对这种东西做优化,反而是程序代码越清晰越好,可读性往往大于优化。再者说真要做这种程度的优化的话,往往也用汇编写了
Ⅱ C语言中i++与++i那个速度快
前置的自增运算符(++i)速度快,因为前置的自增后直接返回引用,而后置的先定义一个临时变量,把值赋给临时变量,然后自增,返回临时变量
Ⅲ C语言中,是否int型的变量运算速度最快
不是吧!int,char这些变量字长不一样。要按字长的长短来区分速度的话那么字长最小的应该速度最快(同一台电脑来说)。
Ⅳ c语言中运算符运算速度的排名,优先级别已经知道如图所示,想知道他们的运算速度的排名,了解的告诉下谢谢
基本上也是按照操作符个数来的
1取址 ,赋值
2位运算
3逻辑非
4加减
5逻辑与或
6 乘除
三目运算符
Ⅳ 在c语言中乘法和除法,比位移运算更快吗
除法是最慢的,还有像乘法
1000111111 *2会直接优化成1000111111加个0,所以位移更快
Ⅵ C语言里面的运算符优先顺序如何
C语言中,运算符的运算优先级共分为15 级。1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。
各等级运算符如下:
(以下说明中,对传统的1级和2级做了细化,1和2对应传统1级,3和4对应传统2级,所以细化说明共有17级。)
1、基本表达式 1级
基本表达式(Primary expressions),主要是用于运算符之间,做为运算数。
标识,常量,字符串文字量,优先级提升表达式最优先执行。
优先级提升表达式是指圆括号包围的表达式,如“( expression )”
2、后缀表达式 2级
postfix-expression [ expression ],数组下标运算。
postfix-expression ( argument-expression-list),函数调用,括号内的参数可选。
postfix-expression . identifier,成员访问,
postfix-expression -> identifier,成员访问,->号之前应为指针。
postfix-expression ++,后缀自增
postfix-expression --,后缀自减
( type-name ) { initializer-list }
( type-name ) { initializer-list , } 复合初始化,C99后新增。
3、单目/一元运算 3级
++ unary-expression 前缀自增
-- unary-expression 前缀自减
unary-operator cast-expression 单目转型表式式, 包括 取地址& ,提领 * , 正号+ ,负号- 位反~ 逻辑否!。
sizeof unary-expression 求类型长度,对表达式求类型长度
sizeof ( type-name ) 求类型长度
4、强制类型表达式 4级
( type-name ) cast-expression,强制表达式成为type-name指定的类型。
5、乘法表达式 5级
“ * ” 乘法运算符;“ / ”除法运算符;“ % ” 取余运算符。
6、加法运算符 6级
“ + ”加法运算符;“ - ”减法运算符。
7、移位运算符 7级
<< 左移运算符;>> 右移运算符。
8、关系运算符 8级
<、<=、>、>=关系运算符。
9、相等运算符 9级
“ == ”等于运算符;“ != ”不等于运算符。
10、位与运算符 10级
“ & ”按位与运算符
11、位异或运算符 11级
“ ∧ ”按位异或运算符(Bitwise exclusive OR operator)。
12、位或运算符 12 级
“ | ”按位或运算符(Bitwise inclusive OR operator)。
13、逻辑与运算符 13级
“&&”逻辑与运算符。
14、逻辑或运算符 14 级
“ || ”逻辑或运算符。
15、三元条件运算符 15级
? :条件运算符。
16、赋值运算符 16 级
=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=赋值运算符。
17、逗号运算符 17级
“,”逗号运算符。
具体可参见下图:
Ⅶ C语言中 加法运算和逻辑运算 哪个效率高
不明白楼上的啥意思。呵呵
加法的效率肯定是最快的。原因是处理器内部加逻辑单元,所以加法速度最快。
逻辑运算符,实质上也是进入到加逻辑单元进行运算,但是运算之前要把逻辑运算符转换为加运算符。所以效率低点。但是也很快。
在计算机中,一切运算都是通过转换到加运算符执行操作的。
Ⅷ c语言中的运算符优先级高低是什么意思
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”。
运算符的优先级是从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。
(8)c语言运算符速度快慢扩展阅读
优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
指针最优,单目运算优于双目运算。如正负号。先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7。逻辑运算最后结合。
Ⅸ C语言大神,小弟请教 a<<2*5与a*20哪个运算速度更快 想这个运算速度的比较,怎样测试计算的时间
比如说8位的单片机,如果处理8位的变量a,并且支持左移指令和乘法指令。那么a<<2*5的汇编代码就是先左移两次再做一次乘法,而a*20就是直接的做一次乘法。结果就是a*20快。但要是单片机不支持乘法指令,那么把乘法转换为加法,这时就是a<<2*5的速度快了。
如果乘数是2的幂次方,比如2、4、8、16、32等等,那可以转换为左移1、2、3、4、5次这样运算速度最快,这对于不支持乘法指令的处理器是非常重要的——如果按照一般的算法,乘法变成加法,a×20就变成重复20次加a的动作,这样很浪费时间。但以转变为(a<<4)+(a<<2),这样只需要3次移位和一次加法就算出结果,比乘法表达式速度快的多。
Ⅹ C语言里乘法比加法慢多少,浮点数运算比整数运算慢多少
这个和C语言关系不大
因为是CPU执行的
所以实际上 要看硬件指令集。
一般来说 int型加法需要做一次操作即可。
而乘法大约是加法的5倍左右,具体看内核指令实现
最快可能到2倍 最慢可能到40倍。
浮点数运算,主要看是否有专门的硬浮点计算单元。 如果有,那么和加法差不多,稍慢一些
如果没有 那就慢很多了。