C++简单分析

来源:百度知道 编辑:UC知道 时间:2024/06/08 23:07:52
7.若有如下定义和声明:
structs
{ int m;char ch;double x;
union t {char a〔6〕;int b〔3〕;} tt;} ss;
则sizeof(struct s)的值是()
A)6
B)14
C)17
D)20
答案?为什么?
8.以下选项中的表达式调用库函数依次求-4.5的绝对值、-4.0的平方根值、30°角的正弦值和2的3次方值。正确的调用是()
A)abs(-4.5)
B)sqrt(-4.0)
C)sin(3.1416/6.0)
D)paw(2.0,3.0)

上面的我知道答案了是C double是8个字节的

这个要根据编译器对应的字节数,比如TC中int 为2字节,VC6.0中int为4字节,不明确 int、double、char的字节数没法算。

还有这里面有一个“内存对齐”问题!

我在VC6.0里测试了下sizeof(struct s),结果是32.(VC6.0中int为4字节,double为8字节,char为1字节)

根据内存对齐规则 取 8*4

struct s
{
int m; //4
char ch; //1
double x; //8

union t //只取最大值12即可
{
char a[6]; //6
int b[3]; //12
}tt;

}ss;

你那个6和3是什么意思,如果是数组的话是32
如果是初始化的话是24...
没答案了,我是运行了的..应该是32位机

补充:第一个选A..sizeof就是一个函数
第二个选A..格式问题..2f
第三个A是绝对值
B是开方
C是正弦
D是三次方,这个很简单的啊

还有,你说清楚最开始那个到底是括号还是方括号...联合里面那个

D//字节对齐,前三个为16,后面共用体取最大的,4字节,加一起是20,如果是int数组,那么正确答案应该是28
C
B
ABC