在C ++中,我遇到了一些困难! 我想知道这些c语句的c ++是什么?
struct stat sb; // this is struct, will be same in c++
printf("I-NODE NUMBER: %ld\n", (long) sb.st_ino); // this is C statement
// c++ statement of above statement
cout<<" Inode number: "<< (long) sb.st_ino; // is this the correct way?
// or this one
cout<<" Inode number: "<< (long) (long) sb.st_ino; // is this the correct way?
答案 0 :(得分:1)
在C ++中,您可能只是执行以下操作。演员根本不需要。
std::cout << " Inode number: " << sb.st_ino;
答案 1 :(得分:1)
虽然c样式的强制转换可以在c++
中使用,但使用C++
样式强制转换被认为是更好的样式。这是在您列出的情况下使用static_cast
。像这样:
cout<<" Inode number: "<< static_cast<long>(sb.st_ino);
同样在最后一个例子中,将表达式两次转换为相同类型是没有意义的。如果您尝试编写的内容是long long
使用的演员:
cout<<" Inode number: "<< static_cast<long long>(sb.st_ino);
同时查找dynamic_cast,const_cast,reinterpret_cast(应尽可能避免最后两个)。