在C ++中键入casting struct

时间:2014-06-23 14:50:46

标签: c++

在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?

2 个答案:

答案 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(应尽可能避免最后两个)。