今天写了一段c++代码,功能是通过命令行传参计算2个参数的和,
在进行参数类型转换的时候,报下以错误:
025.cpp:9:14: error: cast from pointer to smaller type 'int' loses information
sum += (int)argv[i]
刚开始我没想去查在c++中进行字符类型转换的方法,而是想判断一下argv[1]是什么类型。
于是加了下面一行代码:
for (int i=1; i<3; ++i){ //cout << argv[i]<
输出的结果是:PKc
typeid(argv)的结果是PPKc
注:要想使用typeid,必须加上#include
这是什么东西?于是开始百度,但没搜到,在知乎上看到这样的解释:
名字是编译器规定的。具体到这个上面你可以记成pointer(P) const(K) char(c)
原来main函数传递的argv的类型是 const char *, 是一个字符指针常量.
对了,知科那哥们说是编译器规定,我是在mac下运行的程序,gcc的版本是4.2.1,还没在windows下测试过。
上面代码中对argv的类型转换也是错误的。
正确的程序如下:
#include #include using namespace std; int main(int argc, const char *argv[]){ int sum = 0; cout<2){ for (int i=1; i<3; ++i){ int item = stoi(argv[i]); sum += item; } } //cout << argc <