相关疑难解决方法(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
查看次数

为什么'for'循环条件失败?

在下面显示的代码中,没有任何内容被打印,这意味着for循环中的条件失败.可能是什么原因?

我想知道,因为当我TOTAL_ELEMENTS单独打印时,它给出了5,所以它必须是5-2=3 => -1<=3,所以它应该打印一些东西.

#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 type-conversion implicit-conversion c-preprocessor

12
推荐指数
3
解决办法
1687
查看次数

已登录未签名的转化

可能重复:
一个谜语(在C中)

看到这段代码

  #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)

现在这个循环不会运行.sizeof()将返回无符号值,因此TOTAL_ELEMENTS具有无符号值.现在,进入for循环,请告诉我,如果一元运算符' - '在signed int 2上工作或隐式转换发生在unsigned中,然后' - '运算符工作.

c

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

为什么#define不能用于for循环?

在此程序中,TOTAL_ELEMENTS当不用于for循环时,计算正确.并且第一个printf正确打印.但是,即使循环中的条件为真,第二个printf也无法工作.TOTAL_ELEMENTS回报7.而-1<7-2-1<5是真实的.那么这里有什么问题?

#include<stdio.h>

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

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

c c-preprocessor

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

对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程序不打印数组值?

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

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

打印数组中的元素

可能重复:
对C宏扩展和整数运算感到困惑
一个谜语(在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)

这是为什么?

c c++ arrays printf

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

C++宏 - for循环出错

我有以下代码的问题.第一个for循环打印数组中的所有元素,而第二个for循环不打印任何东西.为什么?

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

int main()                                                                     
{                                                                              
    int d;                                                                     
    //Working                                                               
    for(d=0;d < (TOTAL_ELEMENTS);d++)                                          
    {                                                                       
        cout << array[d] <<endl;                                               
    }                                                                       

    //This does not work. Why does this code fail? Isn't it same as the one above?
    //If I assing TOTAL_ELEMENTS to a variable and then use that in for loop (below), it works! Why?                                                  
    for(d=-1; d < (TOTAL_ELEMENTS);d++)                                        
    {                                                                       
        cout << array[d + 1] << endl;                                              
    }                                                                       
}      
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

c c++

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

自动类型转换

可能重复:
签名到无符号转换
一个谜语(在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代码有什么问题?

可能重复:
对C宏扩展和整数运算感到困惑
一个谜语(在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)

c arrays c-preprocessor

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

#define宏中定义的变量大小是多少?

int array[] = {23,34,12,17,204,99,16};
#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
printf("%d",sizeof(TOTAL_ELEMENTS));
Run Code Online (Sandbox Code Playgroud)

这是我的一些示例代码.数组是整数类型.所以,这array[0]也是一个整数.整数除以整数应该产生一个整数.但是,当我尝试TOTAL_ELEMENTS使用sizeof()运算符查找大小时,它显示8个字节.为什么??

c

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