相关疑难解决方法(0)

从-1开始的循环不会打印任何内容

该程序应该打印出来的元素array,但是当它运行时,没有显示输出.

#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 integer loops sizeof negative-number

55
推荐指数
3
解决办法
7233
查看次数

一个谜语(在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宏扩展和整数运算感到困惑

可能重复:
一个谜语(在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)

这里代码的输出不会按预期打印数组元素.但是当我添加一个(int)的类型转换时,ELEMENTS的宏定义为

 #define TOTAL_ELEMENTS (int) (sizeof(array) / sizeof(array[0]))
Run Code Online (Sandbox Code Playgroud)

它按预期显示所有数组元素.

  • 这种类型转换是如何工作的?

基于此,我有几个问题:

  • 如果我有一些宏定义,这是否意味着:

    #define AA (-64)

默认情况下,在C中,所有定义为宏的常量都等同于signed int.

如果是,那么

  • 但是,如果我必须强制在宏中定义一些常量,因为unsigned int是否有任何常量后缀而不是我可以使用(我试过UL,UD既不起作用)?

  • 如何在宏定义中定义常量以表现为unsigned int?

c macros c-preprocessor

3
推荐指数
2
解决办法
8463
查看次数

标签 统计

c ×3

c-preprocessor ×1

integer ×1

loops ×1

macros ×1

negative-number ×1

sizeof ×1