c++里pow函数中的后置递增++失灵
各位前辈好。
我想请问下
c++
int a = 1
pow(a++,2)的结果与pow(a,2)的结果一样,都是1.
既没有如同pow(++a,2)的结果:先(1+1)再^2
也没有先1^2再加1
为什么? $ cat main.cpp
#include <iostream>
#include <cmath>
int main() {
{
int a = 1;
double d = pow(a++, 2);
std::cout << d << std::endl;
}
{
int a = 2;
double d = pow(a++, 2);
std::cout << d << std::endl;
}
return 0;
}
$ g++ -g -Wall -o main main.cpp
$ ./main
1
4
$
人造人 发表于 2021-7-13 11:29
不是自增的++失效,而是a++和++a作为参数时,参数是传值的,a++是先将自己的值传给函数pow然后自增函数接收的参数值为1,而++a是先自增再传值,函数接收的参数值为2。结果当然不一样。在C/C++中函数的参数一般是传值,除非你用引用或者指针的方式进行传入。 人造人 发表于 2021-7-13 11:29
你好。我的答案与你的一致。但可能误会了我的问题。我想问的是为什么是1和4,而不是2和5。++后置递增不是要+1吗 元武 发表于 2021-7-13 12:09
你好。我的答案与你的一致。但可能误会了我的问题。我想问的是为什么是1和4,而不是2和5。++后置递增不是 ...
后 ++,先使用值,然后再加
a++是先将自己的值传给函数pow,然后自增,函数接收的参数值为1
页:
[1]