我不懂的几个简单C 问题,有人知道答案么,要有一点点解释呀,追加到200分
时间:2008-07-25 06:47:27
来源:论坛整理 作者: 编辑:chinaitzhe
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把我搞糊涂了。
网友回复:.
自己调试下可以找得到问题的
既然是找问题的题目,就要先想想哪里可能错,再去找啊
代码很具体了。。。不废话了
网友回复:
- 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 而字符串指针的比较比较的是指向的值是否相等
网友回复:
网友回复:
- 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,怎么解释啊?? 谢谢答复!!
网友回复:
网友回复:jf
网友回复:建议上机调试,自己分析学习,效果更好。我也是初学C++。自己分析理解后记忆才深刻。
关键字:不懂,几个,简单,问题,有人,
下一篇:下面没有链接了











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