小编vla*_*koc的帖子

在C++中比较数组是否相等

有人可以向我解释为什么以下代码的输出是说数组不相等

int main()
{

    int iar1[] = {1,2,3,4,5};
    int iar2[] = {1,2,3,4,5};

    if (iar1 == iar2)
        cout << "Arrays are equal.";
    else
        cout << "Arrays are not equal.";

    return 0;   
}
Run Code Online (Sandbox Code Playgroud)

c++ arrays comparison equality

41
推荐指数
5
解决办法
9万
查看次数

为什么编译器允许缩小转换

任何人都可以向我解释一下,如果初始化器可能导致信息丢失,为什么编译器允许初始化内置类型的变量?

例如C++ Primer,第5版说,如果初始化器可能导致信息丢失,编译器将不会让我们列出内置类型的初始化变量.

但我的编译器gcc v 4.7.1 a在以下代码中成功初始化变量:

long double ld = 3.1415926536; 
int a{ld};
Run Code Online (Sandbox Code Playgroud)

只有警告:缩小'ld'从'long double'到'int'的转换{} [-Wararrowing].

c++ c++11

6
推荐指数
1
解决办法
1212
查看次数

为什么我们可以直接复制指针,但是我们不能直接在c ++中复制数组

定理说我们不能将数组初始化为另一个数组的副本.但是我们可以将指针初始化为指向另一个数组的第一个元素的指针副本:

int a[] = {0, 1, 2}; 
int a2[] = a;       //error
int *a3 = a;        //OK
Run Code Online (Sandbox Code Playgroud)

为什么int a2[] = a;会出错?

c++

5
推荐指数
2
解决办法
1879
查看次数

什么是旧式演员的命名演员:pv =(void*)ps;

旧式代码:

const string *ps;  
void *pv;

pv = (void*)ps;
Run Code Online (Sandbox Code Playgroud)

我尝试了三种不同的命名演员:

pv = static_cast<void*>(ps); //  error: invalid static_cast from type ‘const string* {aka const std::basic_string<char>*}’ to type ‘void*’

pv = const_cast<void*>(ps); // error: invalid const_cast from type ‘const string* {aka const std::basic_string<char>*}’ to type ‘void*’

pv = reinterpret_cast<void*>(ps); // error: reinterpret_cast from type ‘const string* {aka const std::basic_string<char>*}’ to type ‘void*’ casts away qualifiers
Run Code Online (Sandbox Code Playgroud)

如你看到的.什么都行不通.

c++

4
推荐指数
1
解决办法
2082
查看次数

标签 统计

c++ ×4

arrays ×1

c++11 ×1

comparison ×1

equality ×1