我不懂的几个简单C 问题,有人知道答案么,要有一点点解释呀,追加到200分

时间:2008-07-25 06:47:27   来源:论坛整理  作者:  编辑:chinaitzhe
5. 以下代码有什么问题?[C 易]
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b();
b.fun();
}

6. 以下代码有什么问题?[C 易]
cout < < (true?1:"1") < < endl;
8. 以下代码中的输出语句输出0吗,为什么?[C 易]
struct CLS
{
int m_i;
CLS( int I ) : m_i(i) {}
CLS()
{
CLS(0);
}
};
CLS obj;
cout < < obj.m_i < < endl;

1. 以下三条输出语句分别输出什么?[C易]
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout < < boolalpha < < ( str1==str2 ) < < endl; // 输出什么?
cout < < boolalpha < < ( str3==str4 ) < < endl; // 输出什么?
cout < < boolalpha < < ( str5==str6 ) < < endl; // 输出什么?



网友回复:struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b(); //这里出问题了,因该为Test b;
b.fun(); //但是编译器在这里给出错误!!!
}
网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/



5. 以下代码有什么问题?[C  易] 

struct Test 

{ 

    Test( int ) {} 

    Test() {} 

    void fun() {} 

}; 

void main( void ) 

{ 

    Test a(1); 

    a.fun(); 

    Test b(); //这个没括号的,有括号是定义函数

    b.fun(); 

} 



6. 以下代码有什么问题?[C  易] 

cout < < (true?1:"1") < < endl;  //1和"1"类型不一样

8. 以下代码中的输出语句输出0吗,为什么?[C  易] 

struct CLS 

{ 

    int m_i; 

    CLS( int I ) : m_i(i) {} 

    CLS() 

    { 

        CLS(0); 

    } 

}; 

CLS obj; 

cout < < obj.m_i < < endl; 



1. 以下三条输出语句分别输出什么?[C易] 

char str1[]      = "abc"; 

char str2[]      = "abc"; 

const char str3[] = "abc"; 

const char str4[] = "abc"; 

const char* str5  = "abc"; 

const char* str6  = "abc"; 

cout < < boolalpha < < ( str1==str2 ) < < endl; // 输出什么? 0 //数组指针当然不同

cout < < boolalpha < < ( str3==str4 ) < < endl; // 输出什么? 0 //数组指针当然不同

cout < < boolalpha < < ( str5==str6 ) < < endl; // 输出什么? 1 //


网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/









struct Test

{

    Test( int ) {}

    Test() {}

    void fun() {}

};

int main( void )

{

    Test a(1);

    a.fun();

   // Test b();

    Test b;

    b.fun();

    return 0;

}






网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





//cout < < (true?1:"1") < < endl; 

cout < < (true?1:'1') < < endl; 




网友回复:cout < < (true?1:"1") < < endl;
条件运算符要去后面的表达式类型相同或者
可以隐式转换!!
网友回复:8. 以下代码中的输出语句输出0吗,为什么?[C 易]
struct CLS
{
int m_i;
CLS( int I ) : m_i(i) {}
CLS()
{
CLS(0);
}
};
CLS obj;
cout < < obj.m_i < < endl;

这个0是哪里的?是不是象JAVA一样成员变量自动初始化为0?
网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





#include<iostream>

using namespace std;



struct CLS

{

    int m_i;

    //CLS( int I ) : m_i(i) {}

    CLS( int i) : m_i(i) {}

    CLS()

    {

        CLS(0);  //这里产生的是另一个临时的局部变量,不会影响原有的m_i,原有的m_i的值是不定的。

    }

};



int main()

{

  CLS obj;

  cout << obj.m_i << endl; 

  return 0;

}






网友回复:char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout < < boolalpha < < ( str1==str2 ) < < endl; // 输出false
cout < < boolalpha < < ( str3==str4 ) < < endl; // 输出false
cout < < boolalpha < < ( str5==str6 ) < < endl; // 输出true
网友回复:这些问题都是些基础方面的.

建议LZ自己搞个工程跑下,然后按照书本把错误一个个解决掉,那样的印象比你在这边看贴要深多的.


网友回复:char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
自动变量存储到栈区,
并且每个变量的分配地址不一样,
常量分配到全局存储区,
并且保持唯一!!
网友回复:CLS( int I ) : m_i(i) {}
主要是这个大写I把我搞糊涂了。

网友回复:
引用 11 楼 kulou1087 的回复:
CLS( int I ) : m_i(i) {}
主要是这个大写I把我搞糊涂了。
.
自己调试下可以找得到问题的
既然是找问题的题目,就要先想想哪里可能错,再去找啊
代码很具体了。。。不废话了
网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





//兄弟我建议你好好的看下书,

//这些问题书上都说了的

5. 以下代码有什么问题?[C  易] 

struct Test 

{ 

    Test( int ) {} 

    Test() {} 

    void fun() {} 

}; 

void main( void ) 

{ 

    Test a(1); 

    a.fun(); 

    Test b(); //这个没括号的,有括号是定义函数

    b.fun(); 

} 



6. 以下代码有什么问题?[C  易] 

cout < < (true?1:"1") < < endl;  //1和"1" 不能进行隐试的转换, 改成'1'就可以了

8. 以下代码中的输出语句输出0吗,为什么?[C  易] 

struct CLS 

{ 

    int m_i; 

    CLS( int I ) : m_i(i) {}//这是提供1个实参的构造函数 

    CLS()//默认构造函数 

    { 

        CLS(0); //这里产生的是另一个临时的局部变量,不会影响原有的m_i,原有的m_i的值是不定的。

                 // 你把这该成m_i = 10;看下你就明白了

    } 

}; 

CLS obj; //定义

cout < < obj.m_i < < endl; 



1. 以下三条输出语句分别输出什么?[C易] 

char str1[]      = "abc"; 

char str2[]      = "abc"; 

const char str3[] = "abc"; 

const char str4[] = "abc"; 

const char* str5  = "abc"; 

const char* str6  = "abc"; 

cout < < boolalpha < < ( str1==str2 ) < < endl; // 输出什么? false

cout < < boolalpha < < ( str3==str4 ) < < endl; // 输出什么? false

cout < < boolalpha < < ( str5==str6 ) < < endl; // 输出什么? true




网友回复:CLS( int I ) : m_i(i) {} //把I改成i
网友回复:oo又转型了~~学习
网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





5. 以下代码有什么问题?[C  易] 

struct Test 

{ 

    Test( int ) {} 

    Test() {} 

    void fun() {} 

}; 

void main( void ) 

{ 

    Test a(1); 

    a.fun(); 

    Test b(); //你这里有问题, 这等于是声明了一个函数,返回值类型是Test, 参数是void;

//应该是 Test b = Test();这样就是调用Test的默认构造函数构造b

    b.fun(); 

} 



6. 以下代码有什么问题?[C  易] 

cout < < (true?1:"1") < < endl; 

有问题, 为什么呢?因为三目运算符要求后面2参数是同样的类型或者是相互可以转换的







8. 以下代码中的输出语句输出0吗,为什么?[C  易] 

struct CLS 

{ 

    int m_i; 

    CLS( int i ) : m_i(i) {} 

    CLS() 

    { 

        CLS(0); //这是临时对象,以0初始化,但是不会改变自身的m_i

    } 

}; 

CLS obj; 

cout < < obj.m_i < < endl; 

输出值不定!





1. 以下三条输出语句分别输出什么?[C易] 

char str1[]      = "abc"; 

char str2[]      = "abc"; 

const char str3[] = "abc"; 

const char str4[] = "abc"; 

const char* str5  = "abc"; 

const char* str6  = "abc"; 

cout < < boolalpha < < ( str1==str2 ) < < endl; // 输出什么? false

cout < < boolalpha < < ( str3==str4 ) < < endl; // 输出什么? false

cout < < boolalpha < < ( str5==str6 ) < < endl; // 输出什么? true



字符数组名的比较是比较其地址即&str1和&str2

而字符串指针的比较比较的是指向的值是否相等




网友回复:
引用 1 楼 bitxinhai 的回复:
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b(); //这里出问题了,因该为Test b;
b.fun(); //但是编译器在这里给出错误!!!
}

网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





1. 以下三条输出语句分别输出什么?[C易] 

char str1[]      = "abc"; 

char str2[]      = "abc"; 

const char str3[] = "abc"; 

const char str4[] = "abc"; 

const char* str5  = "abc"; 

const char* str6  = "abc"; 

cout < < boolalpha < < ( str1==str2 ) < < endl; // 输出什么? 

cout < < boolalpha < < ( str3==str4 ) < < endl; // 输出什么? 

cout < < boolalpha < < ( str5==str6 ) < < endl; // 输出什么? 



可以在vc里面显示一下就可以了




网友回复:const char* str5 = "abc";
const char* str6 = "abc";
两句等同于 const char* str5 = "abc";
const char* str6 = str5;
因此两者的内存地址一样。所以 第三行输出true。
假如不相信 ,可以利用printf("%d",str5),printf("%d",str6)看看,地址确实一样。
网友回复:5. 以下代码有什么问题?[C 易]
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b(); //Test b;
b.fun();
}
6. 以下代码有什么问题?[C 易]
cout < < (true?1:"1") < < endl; //类型不一致
8. 以下代码中的输出语句输出0吗,为什么?[C 易]
struct CLS
{
int m_i;
CLS( int I ) : m_i(i) {}
CLS()
{
CLS(0);
} };
CLS obj;
cout < < obj.m_i < < endl; //调用默认构造函数,红色标注区域,默认构造函数把m_i复制为一

char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout < < boolalpha < < ( str1==str2 ) < < endl; // 输出什么? false;数组指针比较
cout < < boolalpha < < ( str3==str4 ) < < endl; // 输出什么? false;数组指针比较
cout < < boolalpha < < ( str5==str6 ) < < endl; // 输出什么? true;字符串比较

网友回复:5. 以下代码有什么问题?[C 易]
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b(); //Test b;
b.fun();
}
6. 以下代码有什么问题?[C 易]
cout < < (true?1:"1") < < endl; //类型不一致
8. 以下代码中的输出语句输出0吗,为什么?[C 易]
struct CLS
{
int m_i;
CLS( int I ) : m_i(i) {}
CLS()
{
CLS(0);
} };
CLS obj;
cout < < obj.m_i < < endl; //调用默认构造函数,红色标注区域,默认构造函数把m_i复制为一

char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout < < boolalpha < < ( str1==str2 ) < < endl; // 输出什么? false;数组指针比较
cout < < boolalpha < < ( str3==str4 ) < < endl; // 输出什么? false;数组指针比较
cout < < boolalpha < < ( str5==str6 ) < < endl; // 输出什么? true;字符串比较

网友回复:mark....
网友回复:[Quote=引用 16 楼 k2eats 的回复:]
C/C code
5. 以下代码有什么问题?[C 易]
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1); ////为什么不把这句看成函数定义,虽然看成函数定义有错??????
a.fun();
Test b(); //你这里有问题, 这等于是声明了一个函数,返回值类型是Test, 参数是void;(那上面那行呢??????????????????)
//应该是 Test b = Test();这样就是调用Test的默认构造函数构造b
b.fun();
}


网友回复:请教一下,指针是用来存地址的,可cout < <str1(,2,3,4,5,6),输出的是abc,怎么解释啊?? 谢谢答复!!
网友回复:
引用 2 楼 oo 的回复:
C/C code5. 以下代码有什么问题?[C 易]
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b(); //这个没括号的,有括号是定义函数
b.fun();
}

6. 以下代码有什么问题?[C 易]
cout < < (true?1:"1") < < endl; //1和"1"类型不一样
8. 以下代码中的输出语句输出0吗,为什么?[C 易]
struct CLS
{ …

网友回复:jf
网友回复:建议上机调试,自己分析学习,效果更好。我也是初学C++。自己分析理解后记忆才深刻。
关键字:不懂,几个,简单,问题,有人,

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面