注册 登录
编程论坛 C++教室

这三个题目怎么做?

kldyutou 发布于 2010-01-05 11:12, 485 次点击
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; // 输出什么?
2. 非C++内建型别 A 和 B,在哪几种情况下B能隐式转化为A?[C++中等]
3. 以下代码中的两个sizeof用法有问题吗?[C易]
    void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
    {
        for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )
            if( 'a'<=str[i] && str[i]<='z' )
                str[i] -= ('a'-'A' );
    }
    char str[] = "aBcDe";
    cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;
    UpperCase( str );
    cout << str << endl;


1 回复
#2
pangding2010-01-05 13:08
第一题与编译时的优化行为和编译器的实现有关。个人认为出这种题目出的不是很好,回答它应该有一定的上下文。
一种情况可能是:false, false, true。当然,false, true, true,也有可能。
 
第二个我觉得有转换构建函数的时候就可以转换。当然语法又规定了好几种情况,可以有默认(即隐式)的转换构造函数。
 
只有第三个很确定是用的不对。
1