c - 单行语句

标签 c ansi-c

#include<stdio.h>
#include<stdlib.h>

int main()
{   
    int i,max,max2;     

    int arr[10];
    for(i=0;i<10;i++)   arr[i]=rand()%101;

    for(i=0;i<10;i++)   printf("%d\n",arr[i]);

    max=arr[0]; 
    for(i=0;i<10;i++)
    {
        if(max < arr[i])    max2=max;   max=arr[i];

    }
    printf("Max is : %d\n",max);
    printf("2nd max is : %d",max2);
}

输出: 32 32 54 12 52 56 8 30 44 94

最大值:94

第二个最大值是:44

但是当我将“if”语句更改为

if(max < arr[i])
    {   
        max2=max;
        max=arr[i];
    }

效果很好!

最大值:94

第二个最大值是:56

我以前在单行语句中使用过多个操作,例如

if(xyz) doSomething; break;

但是这里不起作用,为什么?

最佳答案

C 中不存在“单行语句”这样的东西,因为 C 不关心换行符。它们仅用于帮助读者阅读。

这个

if(max < arr[i])    max2=max;   max=arr[i];

相当于

if(max < arr[i])    
  max2=max;   
max=arr[i];

相当于

if(max < arr[i])    
{
  max2=max;   
}
max=arr[i];

关于c - 单行语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50314788/

相关文章:

c - glib 手册页不适用于 2.47.5

c - Linux内核是如何创建/proc/$pid/maps文件的?

c - IOCCC 1988/isaak.c - 为什么即使在 ANSI 化之后也没有输出?

c - 简单的二维

c - ANSI C - 清除字符串

c - 访问已分配内存时的分段代码

c - 使用两个缓冲区和两个互斥锁的线程同步: C

c - 为什么此代码片段的输出为 -33

c - printf 如何在 ANSI-C 中编译(可变参数)

c - c中十进制到二进制的错误