c - for循环中的if条件

标签 c

这个程序输出 1。我不明白它是如何输出 1 的,因为 for 循环将在包含值 12 的 a[2][3] 处失败。所以 12 将被分配给 k并且输出必须是 12。

#include<stdio.h>

int main()
{
    int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    int i,j,k=99;
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
        {
            if(a[i][j]<k)
            {
                k=a[i][j];
                printf("%d\n",k);
            }
        }
    }
    printf("Res:%d\n",k);
    return 0;
}

最佳答案

第一次通过循环时,if 被计算为 a[0][0] < k,即 1 < 99,为真。 如果 if 是 a[1][0] < k,即 2 < 1,则第二次通过他循环,则评估为 false,因此 k 的值不会更新 k 永远不会被重新分配另一个值,因此最后 k=1。

关于c - for循环中的if条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7063177/

相关文章:

c - Solaris 上的安德森队列锁

将多个 C 源文件编译成一个唯一的目标文件

c - 如何使用 Gstreamer C API 对 videomixer 进行编程

c - timer_create 如何在第一个计时器到期后停止递归线程函数调用?

c - 无序修改和访问指针

objective-c - 如果语句出错-xcode

c - 如何在特定界面上使用 cURL

c - 为什么 scanf 在 Nios 2 IDE 中打印它的输入?

c - 不明白这个 Infinite While 循环

c - R 来自 C——最简单的 Helloworld