C语言 if语句有无(;)分号问题

C语言 if语句有无(;)分号问题

在C语言中,if语句后面不带分号(;)的情况有两种主要形式:

1. 带有大括号的代码块:如果if语句后面跟随一个由大括号({})包围的代码块,那么这个代码块中的语句只有在if条件为真时才会执行。例如:

if (condition)

{

// 这个代码块中的语句只会在condition为真时执行

// 这里可以包含多条语句

}

2. 不带大括号的单条语句:如果if语句后面直接跟随一条单独的语句(没有大括号),那么只有这条单独的语句会被作为if的一部分执行。如果条件为真,则执行这条语句;如果条件为假,则跳过这条语句。例如:

if (condition)

statement; // 只有这条语句受到if条件的控制

在这两种情况下,if语句后面都不应该有分号。分号本身是一个空语句,如果在if语句后面直接放置一个分号,如:

if (condition);

这会导致if语句实际上不控制任何代码,即使条件为真,也不会有任何语句被执行,因为分号后面什么也没有。这是一个常见的编程错误,应该避免。正确的做法是在if语句后面紧跟要执行的代码块或单条语句,而不是一个分号。

引例:

while ((ch = getchar()) != EOF)

{

int i = 0;

for (i = 0; i < 10; i++)

{

if (ch == vowel[i]);

{

printf("Vowel\n");//注意此处写了;这是错误的 导致了后面程序执行错误

break; //while函数要终止了

}

}

if (i == 10)

{

printf("Consonant\n");

}

getchar();//处理\n

}

这里的分号实际上终止了if语句,使得紧随其后的代码块无条件执行。因此,无论ch的值是否与数组vowel中的任何字符匹配,都会执行下面的代码块,打印出"Vowel"并跳出循环。

正确的代码应该去掉这个分号,如下所示:

if (ch == vowel[i])

{

printf("Vowel\n");

break; // Exit the for loop

}

相关推荐

超材料是指什么?种类有哪些?生产商一览
谁有365比分链接

超材料是指什么?种类有哪些?生产商一览

🗓️ 07-18 👁️ 7025
Ben 10系列
www.bst365.com

Ben 10系列

🗓️ 07-05 👁️ 5450
1934年國際足協世界盃
office365人工客服电话

1934年國際足協世界盃

🗓️ 08-02 👁️ 2713

友情链接