📜  C 程序的输出 |设置 1

📅  最后修改于: 2022-05-13 01:56:11.139000             🧑  作者: Mango

C 程序的输出 |设置 1

预测以下程序的输出。问题 1

#include
int main()
{
   int n;
   for(n = 7; n!=0; n--)
     printf("n = %d", n--);
   getchar();
   return 0;
}

输出:上面的程序进入无限循环,因为在检查循环条件 (n != 0) 时 n 永远不会为零。

问题2

#include
int main()
{
   printf("%x", -1<<1);
   getchar();
   return 0;
}

输出取决于编译器。对于 32 位编译器,它将是 fffffffe,对于 16 位编译器,它将是 fffe。

问题 3



# include 
# define scanf  "%s Geeks For Geeks "
main()
{
   printf(scanf, scanf);
   getchar();
   return 0;
}

输出:%s Geeks For Geeks Geeks For Geeks
说明:经过编译的预处理阶段后,printf 语句将变为。

printf("%s Geeks For Geeks ",  "%s Geeks For Geeks ");

现在您可以轻松猜出为什么输出是 %s Geeks For Geeks Geeks For Geeks。

问题 4

#include 
#include 
enum {false, true};
int main()
{
   int i = 1;
   do
   {
      printf("%d\n", i);
      i++;
      if (i < 15)
        continue;
   } while (false);
  
   getchar();
   return 0;
}

输出:1
说明: do wile 循环在每次迭代后检查条件。所以在 continue 语句之后,控制转移到语句 while(false)。由于条件为假,'i' 只打印一次。

现在试试下面的程序。

#include 
#include 
enum {false, true};
int main()
{
   int i = 1;
   do
   {
     printf("%d\n", i);
     i++;
     if (i < 15)
       break;
     } while (true);
  
     getchar();
     return 0;
}

问题 5

char *getString()
{
   char *str = "Nice test for strings";
   return str;
}
  
int main()
{
   printf("%s", getString());
   getchar();
   return 0;
}

输出:“很好的字符串测试”
上面的程序之所以有效,是因为字符串常量存储在数据段(而不是堆栈段)中。因此,当 getString 返回时 *str 不会丢失。