float a = 1.0f;
cout<<(int)a<<endl;//
cout<<(int &)a<<endl; // (int)a表示将a强制转换为int型,哪(int &)a 呢
cout<<boolalpha<<((int)a == (int &)a)<<endl;//
2.
下面代码有什么问题
cout<<(true?1:'1')<<endl;
14 个解决方案
#1
第一个问题:把名为a的那四个字节的内存用int的方式解析
具体结果要参考float类型内存表示方法
第二个问题:1
不保证正确仅供参考 免得误导lz
具体结果要参考float类型内存表示方法
第二个问题:1
不保证正确仅供参考 免得误导lz
#2
http://topic.csdn.net/u/20091005/23/09C29F5A-A89D-4169-8780-6885B6880D23.html
#3
?:表达式冒号两次的选项的类型必须一样,因此1:"1"是不允许的
编译通不过的
编译通不过的
#4
编译通过,运行都出结果为1
#5
帮忙分析下
下面代码有什么问题
cout<<(true?1:'1')<<endl;
谢谢
#6
((int&)b)不是一般的强制转换……
而是相当于……
*((int *)&b),如何知道,这里面是什么知识点。
有相关的资料吗?
#7
这是这个表达式的类型的问题.
标准如是说:
3 Otherwise, if the second and third operand have different types, and either has (possibly cv-qualified) class
type, an attempt is made to convert each of those operands to the type of the other. The process for determining
whether an operand expression E1 of type T1 can be converted to match an operand expression E2
of type T2 is defined as follows:
— If E2 is an lvalue: E1 can be converted to match E2 if E1 can be implicitly converted (clause 4) to the
type “reference to T2”, subject to the constraint that in the conversion the reference must bind directly
(8.5.3) to E1.
— If E2 is an rvalue, or if the conversion above cannot be done:
— if E1 and E2 have class type, and the underlying class types are the same or one is a base class of
the other: E1 can be converted to match E2 if the class of T2 is the same type as, or a base class of,
the class of T1, and the cv-qualification of T2 is the same cv-qualification as, or a greater cvqualification
than, the cv-qualification of T1. If the conversion is applied, E1 is changed to an
rvalue of type T2 that still refers to the original source class object (or the appropriate subobject
thereof). [Note: that is, no copy is made. ]
— Otherwise (i.e., if E1 or E2 has a nonclass type, or if they both have class types but the underlying
classes are not either the same or one a base class of the other): E1 can be converted to match E2 if
E1 can be implicitly converted to the type that expression E2 would have if E2 were converted to an
rvalue (or the type it has, if E2 is an rvalue).
#8
哪么长的英文资料那里找来的?
看不懂
看不懂
#9
C++标准文档 ...
总之,知道?表达式的这个整体的类型是有猫腻的就行了...
#10
有什么猫腻啊,你都没说有什么问题啊。
顺便帮忙讲讲
((int&)b)不是一般的强制转换……
而是相当于……
*((int *)&b),如何知道,这里面是什么知识点。
有相关的资料吗?
顺便帮忙讲讲
((int&)b)不是一般的强制转换……
而是相当于……
*((int *)&b),如何知道,这里面是什么知识点。
有相关的资料吗?
#11
7楼已说,表达式类型....
后面的个强制转换
第一个是左值,不生成临时变量.
第二个...先求其存储位置,再看作int*,再解引用.
#12
((int&)b)到*((int *)&b),的转换,难道是公式吗?
我想知道为什么这样转化,涉及什么知识点。谢谢了、
我想知道为什么这样转化,涉及什么知识点。谢谢了、
#13
额...只谈公式,知识点不是学程序设计的方法啊...
#14
结贴吧............
#1
第一个问题:把名为a的那四个字节的内存用int的方式解析
具体结果要参考float类型内存表示方法
第二个问题:1
不保证正确仅供参考 免得误导lz
具体结果要参考float类型内存表示方法
第二个问题:1
不保证正确仅供参考 免得误导lz
#2
http://topic.csdn.net/u/20091005/23/09C29F5A-A89D-4169-8780-6885B6880D23.html
#3
?:表达式冒号两次的选项的类型必须一样,因此1:"1"是不允许的
编译通不过的
编译通不过的
#4
编译通过,运行都出结果为1
#5
帮忙分析下
下面代码有什么问题
cout<<(true?1:'1')<<endl;
谢谢
#6
((int&)b)不是一般的强制转换……
而是相当于……
*((int *)&b),如何知道,这里面是什么知识点。
有相关的资料吗?
#7
这是这个表达式的类型的问题.
标准如是说:
3 Otherwise, if the second and third operand have different types, and either has (possibly cv-qualified) class
type, an attempt is made to convert each of those operands to the type of the other. The process for determining
whether an operand expression E1 of type T1 can be converted to match an operand expression E2
of type T2 is defined as follows:
— If E2 is an lvalue: E1 can be converted to match E2 if E1 can be implicitly converted (clause 4) to the
type “reference to T2”, subject to the constraint that in the conversion the reference must bind directly
(8.5.3) to E1.
— If E2 is an rvalue, or if the conversion above cannot be done:
— if E1 and E2 have class type, and the underlying class types are the same or one is a base class of
the other: E1 can be converted to match E2 if the class of T2 is the same type as, or a base class of,
the class of T1, and the cv-qualification of T2 is the same cv-qualification as, or a greater cvqualification
than, the cv-qualification of T1. If the conversion is applied, E1 is changed to an
rvalue of type T2 that still refers to the original source class object (or the appropriate subobject
thereof). [Note: that is, no copy is made. ]
— Otherwise (i.e., if E1 or E2 has a nonclass type, or if they both have class types but the underlying
classes are not either the same or one a base class of the other): E1 can be converted to match E2 if
E1 can be implicitly converted to the type that expression E2 would have if E2 were converted to an
rvalue (or the type it has, if E2 is an rvalue).
#8
哪么长的英文资料那里找来的?
看不懂
看不懂
#9
C++标准文档 ...
总之,知道?表达式的这个整体的类型是有猫腻的就行了...
#10
有什么猫腻啊,你都没说有什么问题啊。
顺便帮忙讲讲
((int&)b)不是一般的强制转换……
而是相当于……
*((int *)&b),如何知道,这里面是什么知识点。
有相关的资料吗?
顺便帮忙讲讲
((int&)b)不是一般的强制转换……
而是相当于……
*((int *)&b),如何知道,这里面是什么知识点。
有相关的资料吗?
#11
7楼已说,表达式类型....
后面的个强制转换
第一个是左值,不生成临时变量.
第二个...先求其存储位置,再看作int*,再解引用.
#12
((int&)b)到*((int *)&b),的转换,难道是公式吗?
我想知道为什么这样转化,涉及什么知识点。谢谢了、
我想知道为什么这样转化,涉及什么知识点。谢谢了、
#13
额...只谈公式,知识点不是学程序设计的方法啊...
#14
结贴吧............