相关疑难解决方法(0)

一个谜语(在C中)

一位朋友给了我一个谜语:

#include<stdio.h>

#define TOTAL_ELEMENTS ((sizeof(array) / sizeof(array[0])))
  int array[] = {23,34,12,17,204,99,16};

  int main()
  {
      int d;
      for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
          printf("%d\n",array[d+1]);
      getchar();
      return 0;
  }
Run Code Online (Sandbox Code Playgroud)

上面的代码应该打印所有的数组元素,代码中的问题是什么(输出什么都没有)?我认为循环不会迭代一次?

我发现以下代码确实有效:

#include<stdio.h>



#define TOTAL_ELEMENTS ((sizeof(array) / sizeof(array[0])))
  int array[] = {23,34,12,17,204,99,16};

  int main()
  {
      int d;
      int x = (TOTAL_ELEMENTS-2);
      for(d=-1;d <= x;d++)
          printf("%d\n",array[d+1]);
      getchar();
      return 0;
  }
Run Code Online (Sandbox Code Playgroud)

我有一个理论认为它与宏有关,但我不能指责问题.

c

16
推荐指数
2
解决办法
2656
查看次数

自动类型转换

可能重复:
签名到无符号转换
一个谜语(在C中)

我试图理解为什么这个程序不起作用

 #include<stdio.h>

  #define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
  int array[] = {23,34,12,17,204,99,16};

  int main()
  {
      int d;

      for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
          printf("%d\n",array[d+1]);

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

当我在C.中进行自动类型转换时,我遇到了这个程序.但我不明白有符号和无符号数据类型之间的转换是如何发生的.请解释一下.谢谢,哈里什

c

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

标签 统计

c ×2