关于C++ abs()的问题,好奇怪!!

#include "stdafx.h"

int main(){
vector<int> vec;
vec.push_back( 12 );
cout << std::abs<int>( *vec.begin() - 14 ) << endl;
}

为什么输出的是0呢?
请问是什么原因? 该如何改啊??

第1个回答  2011-10-29
变成这样是你想要的结果cout << abs(*vec.begin() - 14 ) << endl;
不知道你是在哪本书上步步写下得代码?
但是引发了一个问题。C语言中的#include <stdio.h>
跟C++中using namespace std;有什么区别? C语言里面好像没有Vector概念,但C++里有,求大师前来解答追问

自己写代码的时候发现的问题
用C++写的

第2个回答  2011-10-30
这是MSDN对这个函数的解释
The modulus of a complex number is a measure of the length of the vector representing the complex number. The modulus of a complex number a + bi is sqrt(a2 + b2), written |a + bi|. The norm of a complex number a + bi is (a2 + b2), so the modulus of a complex number is the square root of its norm.
The modulus of a complex number.
第3个回答  2011-10-29
cout << std::abs( *vec.begin() - 14 ) << endl;追问

能不能解释一下啊? abs调用的是怎么样的函数?

追答

没见过这样使用方法,在我编译的时候,根本通不过。你用什么编译的?

追问

#include // 加了这个头文件的原因 不知道怎么搞的
#include
#include

using std::vector;
using std::endl;
using std::cout;
因为一般把很多include放在一个头文件里,有时候用abs无法解析,只能abs之类的了

追答

这是模板中的用法吗???我还是一个初学者,好像有点印象听人说模板中牵涉到具体函数,指定函数之类的,我没有记清,这方面我也不懂,不好意思。

追问

恩 是的
虽然还有疑问,还是谢谢了

追答

不用谢

本回答被提问者采纳
第4个回答  2011-10-29
#include <iostream.h>
#include <vector>
using namespace std;
int main()
{
vector<int> vec;
vec.push_back( 12 );
cout << abs( *vec.begin() - 14 ) << endl;
}追问

能不能解释一下啊? abs调用的是怎么样的函数?

相似回答
大家正在搜