把一句C代码翻译成C++代码
话都说在这份上。你们懂的
[解决办法]

翻译之后的
不是很明白
[解决办法]
lz是来散分的。
[解决办法]
对不起,C++不愿意那么做呀。
[解决办法]
没办法printf的实现就是不管你的第一个数的类型是什么都是用4个字节.这个是蛋疼的
[解决办法]
16位系统,short,和int通常都是16位,不用扩展
i还可以是个结构体的对象,修改成cout后,连编译都过不了。
[解决办法]
std::cout<<static_cast<int>(i)<<std::endl;
[解决办法]
什么时候公布结果呢,哥!
[解决办法]
the same...
printf("%d",i):
[解决办法]
翻译完啦
[解决办法]
先来一个内嵌汇编版的
__declspec(naked) int func( ... )
{
__asm mov eax , [esp+4]
__asm ret
}
cout<< func( i );
结果肯定一致。
[解决办法]
这个不错。。
[解决办法]
好了,纯粹C++版本来了。
int func(float a)
{
double x = a;
return *(int*)&x ;
}
template<class T>
int func( T a )
{
return *(int*)&a;
}
#define CALL( a ) cout<< func( a ); printf("\t%d\n" , a );
struct T1
{
double a;
int b;
};
struct T2
{
int a;
double b;
};
struct T3
{
char a;
short b;
};
struct T4
{
short a;
char b;
};
int main()
{
char a = 0x7f;
unsigned char b = 0x7f;
short c = 0x7fff;
unsigned short d = 0x7fff;
int e = 0x7fffffff;
unsigned int f = 0x7fffffff;
__int64 g = 0x7fffffffffffffff;
unsigned __int64 h = 0x7fffffffffffffff;
float i = 123.4567;
double j = 123.4567;
T1 k = {123.456,0x7fffffff};
T2 l = {0x7fffffff,123.456};
T3 m = {0x7f,0x7fff};
T4 n = {0x7fff ,0x7f};
CALL( a );
CALL( b );
CALL( c );
CALL( d );
CALL( e );
CALL( f );
CALL( j );
CALL( h );
CALL( i );
CALL( j );
CALL( k );
CALL( l );
CALL( m );
CALL( n );
}
[解决办法]
std::cout<<static_cast<int>(i);
[解决办法]
难道用模板?还是我领会错了楼主的意思,楼主实际是来散分的
[解决办法]
不懂 学习了
[解决办法]
1.楼主散粉
2.揭晓答案
3.我学习了
[解决办法]
++
的确很弓虽大!:)
看了前面的帖子,发现自己这方面的理解看来很肤浅...坐等楼主教诲!收藏之。
[解决办法]
printf("%d", i);
我的答案
[解决办法]
std::cout<<static_cast<int>(i);
[解决办法]
CSDN就是好,很多书上学不到的东西,在这里可以学到。
感恩一下...
[解决办法]
学习的,不过还真复杂,你们搞科学研究吗
[解决办法]
不错 学习了~
[解决办法]
坐等楼主给分!~~~~~~~~~~~~~