相关疑难解决方法(0)

508
推荐指数
8
解决办法
5万
查看次数

"取消引用NULL指针"意味着什么?

我是C的完全新手,在我的大学工作期间,我遇到了代码中的注释,这些注释通常指的是取消引用NULL指针.我有在C#中的背景下,我已经得到通过,这可能是类似于"的NullReferenceException"你是在净得到的,但现在我有严重的怀疑.

有人可以用非专业人员的术语向我解释这是什么以及它为什么不好?

c pointers

51
推荐指数
2
解决办法
8万
查看次数

GCC:溢出的未定义行为是否应该保持逻辑一致性?

以下代码在我的系统上产生奇怪的东西:

#include <stdio.h>

void f (int x) {
  int y = x + x;
  int v = !y;
  if (x == (1 << 31))
    printf ("y: %d, !y: %d\n", y, !y);
}

int main () {
  f (1 << 31);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译-O1,这打印y: 0, !y: 0.

现在,除了删除int vif行产生预期结果的令人费解的事实之外,我对溢出转换为逻辑不一致的未定义行为感到不舒服。

这应该被认为是一个错误,还是 GCC 团队的理念是,一个意外的行为可以级联成逻辑矛盾?

c gcc overflow undefined-behavior integer-arithmetic

0
推荐指数
1
解决办法
95
查看次数