📜  C++程序的输出|套装22

📅  最后修改于: 2021-05-30 10:51:13             🧑  作者: Mango

预测以下C++程序的输出。

问题1

#include 
using namespace std;
  
int main()
{
    int a = b = c = 0;
    cout << a << "*" << b << "*" << c;
    return 0;
}

输出:

Compile time error!

解释:
声明时不能使用链式语句来初始化变量。因此,语句a = b = c = 0;是非法声明。但是,遵循以下合法语法,可以在C++或C中使用。

int a,b,c;
      a = b = c = 0;

问题2

#include 
using namespace std;
  
int main()
{
    for ( ; ; ) cout << "blank";
    return 0;
}

输出:

Infinite Loop!

解释:
由于for循环中缺少初始化,测试条件和递增/递减条件,因此执行将陷入无限循环中。

问题3

#include 
using namespace std;
  
int main()
{  
   int i;
   for (i=0; i<3; i++);
        
   cout << "hello!" <

输出:

hello!3

解释:
出现Hello!3的结果是因为在执行for循环时,由于定义了for循环的行中存在分号(;),因此它没有任何任务要做。循环将执行3次,i的值将变为3,然后其余语句将执行。

问题4

#include 
using namespace std;
  
int main()
{
    int i;
    i = 1 + (1,4,5,6,3);
    cout << i;
    return 0;
}

输出:

4

解释:
逗号(,)运算符是一个二进制运算符,它评估第一个操作数并丢弃结果,然后评估第二个操作数,然后返回second的值。在这里,逗号(,)运算符的联想性是从左到右,并且很容易理解表达式(1,4,5,6,3)的计算结果为3,然后将结果1 + 3分配给i。

问题5

#include 
using namespace std;
  
int main()
{
    int a = 0, b;
    b = (a = 50) + 10;
    cout << a << "$" << b;
    return 0;
}

输出:

50$60

解释:
语句b =(a = 50)+ 10;使用嵌入式分配的概念。在此,将值50分配给变量a,并将结果50 + 10分配给b。

问题6

#include
using namespace std;
  
int main()
{
    char a = 30, b = 40, c = 10;
    char d = (a*b)/c;
    cout << int(d);
  
    return 0;
}

输出:

120

解释:
在C++也可以执行算术计算考虑字符的ASCII值如果算术运算是在char数据类型的变量进行。在这种情况下,答案是120,这是x的ASCII值。

问题7

#include
using namespace std;
  
int main(int x)
{
    static int i = 5;
  
    if (--i)
    {
        cout << i;
        main(10);
    }
    return 0;
}

输出:

4321

解释:
C++中的任何非零数字都将被视为真值。在这段代码中,if语句倾向于减小i的值,但在if块内部,一次又一次调用main()函数。这里的程序似乎处于无限循环中,但变量i本质上是静态的,它具有直到执行的生命周期,因此如果i变为0,则程序将停止。

问题8

#include
using namespace std;
  
int main(int x)
{
    int i = 5;
  
    if (--i)
    {
        cout << i;
        main(10);
    }
    return 0;
}

输出:

infinite loop

解释:
C++中的任何非零数字都将被视为真值。在这段代码中,if语句倾向于减小i的值,但是在if块内部,一次又一次调用main()函数(所有语句现在都像是一个新程序一样执行),因此该程序将执行由于没有终止条件,将陷入无限循环。

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”