user-0 提问: 请教：单词计数程序中的if...else if...语句，谢谢！

回复:
user: user-1
content: 引用 7 楼 sholber 的回复:对于 if ( 表达式 ) 语句1 else 语句2 若表达式的值不等于0，执行语句1； 若表达式的值等于0，执行语句2； 若语句1是通过一个标号到达的，则不执行语句2：      goto label;      if (0)         label: printf("a.\n");     else         printf("b.\n");  标准里面还允许这种代码存在？？ C，C++果然有点博大精深的味道！！ label:无处不在！

user: user-0
content: 引用 9 楼 wangyang745 的回复:比如当你输入一个1，然后打回车。那么你总共输入了2个字符：‘1’和‘\n’ ;getchar()函数，第一次c=='1'，第二次c==‘\n’ 此时b=='1'于是就会出现lz的结果。 呵呵，明白， 多谢！

user: user-2
content: 比如当你输入一个1，然后打回车。那么你总共输入了2个字符：‘1’和‘\n’ ;getchar()函数，第一次c=='1'，第二次c==‘\n’ 此时b=='1'于是就会出现lz的结果。

user: user-0
content: 引用 6 楼 buyong 的回复:[quote=引用 4 楼 xiazhiqiuyu 的回复:] [quote=引用 1 楼 lm_whales 的回复:] 你这个提问，有点含糊不清：  if 和 else if else 是并列的分支 只有 条件表达式是逐个测试的，执行语句，只会执行一个分支的 一旦任意分支的分支语句执行以后，整个 if  else if else 就执行完成了，其他部分就不再执行了。   if(c1) s1; else if(c2)s2; else s3;  s1,s2,s3;三个语句只有一个能够得到执行。 c1,c2,会挨个测试，直到有一个条件满足（值为为非零） 执行该分支为止。  所有条件都为0， 执行else 分支 即s3 。 无else，在没有一个条件能够满足时，什么也不做。 if 结构是互斥的，只要一个分支执行了，其他分支都不会再执行了。 最前面的条件优先判断，不满足条件，才会继续判断以后的其他条件。 首先，谢谢您的讲解！下面是我做的一个测试if...elseif的小程序，运行结果为hello xx。从结果来看，若if(条件1) elseif(条件2)，条件1和条件2不是判断同一个变量，那么if,elseif后面的语句都会执行，并不是互斥关系了。    不知道是哪里出错或理解有误，请指教! main() { int c; int b = 0; while  ((c = getchar()) != EOF) { if (c == '1') { b='1'; printf("hello\n"); } else if (b == '1') printf("xx\n"); } }  [/quote]  你这个while很有问题呀。你把他改成if,就一次，你就看出来了[/quote]  哦。为什么while 不行呢？谢谢！

user: user-3
content: 对于 if ( 表达式 ) 语句1 else 语句2 若表达式的值不等于0，执行语句1； 若表达式的值等于0，执行语句2； 若语句1是通过一个标号到达的，则不执行语句2：      goto label;      if (0)         label: printf("a.\n");     else         printf("b.\n");

user: user-4
content: 引用 4 楼 xiazhiqiuyu 的回复:[quote=引用 1 楼 lm_whales 的回复:] 你这个提问，有点含糊不清：  if 和 else if else 是并列的分支 只有 条件表达式是逐个测试的，执行语句，只会执行一个分支的 一旦任意分支的分支语句执行以后，整个 if  else if else 就执行完成了，其他部分就不再执行了。   if(c1) s1; else if(c2)s2; else s3;  s1,s2,s3;三个语句只有一个能够得到执行。 c1,c2,会挨个测试，直到有一个条件满足（值为为非零） 执行该分支为止。  所有条件都为0， 执行else 分支 即s3 。 无else，在没有一个条件能够满足时，什么也不做。 if 结构是互斥的，只要一个分支执行了，其他分支都不会再执行了。 最前面的条件优先判断，不满足条件，才会继续判断以后的其他条件。 首先，谢谢您的讲解！下面是我做的一个测试if...elseif的小程序，运行结果为hello xx。从结果来看，若if(条件1) elseif(条件2)，条件1和条件2不是判断同一个变量，那么if,elseif后面的语句都会执行，并不是互斥关系了。    不知道是哪里出错或理解有误，请指教! main() { int c; int b = 0; while  ((c = getchar()) != EOF) { if (c == '1') { b='1'; printf("hello\n"); } else if (b == '1') printf("xx\n"); } }  [/quote]  你这个while很有问题呀。你把他改成if,就一次，你就看出来了

user: user-5
content: 感觉他纯是在考验你耐心 @lm_whales

user: user-0
content: 引用 1 楼 lm_whales 的回复:你这个提问，有点含糊不清：  if 和 else if else 是并列的分支 只有 条件表达式是逐个测试的，执行语句，只会执行一个分支的 一旦任意分支的分支语句执行以后，整个 if  else if else 就执行完成了，其他部分就不再执行了。   if(c1) s1; else if(c2)s2; else s3;  s1,s2,s3;三个语句只有一个能够得到执行。 c1,c2,会挨个测试，直到有一个条件满足（值为为非零） 执行该分支为止。  所有条件都为0， 执行else 分支 即s3 。 无else，在没有一个条件能够满足时，什么也不做。 if 结构是互斥的，只要一个分支执行了，其他分支都不会再执行了。 最前面的条件优先判断，不满足条件，才会继续判断以后的其他条件。 首先，谢谢您的讲解！下面是我做的一个测试if...elseif的小程序，运行结果为hello xx。从结果来看，若if(条件1) elseif(条件2)，条件1和条件2不是判断同一个变量，那么if,elseif后面的语句都会执行，并不是互斥关系了。    不知道是哪里出错或理解有误，请指教! main() { int c; int b = 0; while  ((c = getchar()) != EOF) { if (c == '1') { b='1'; printf("hello\n"); } else if (b == '1') printf("xx\n"); } }

user: user-0
content: 首先，谢谢您的讲解！下面是我做的一个测试if...elseif的小程序，运行结果为hello xx。从结果来看，若if(条件1) elseif(条件2)，条件1和条件2不是判断同一个变量，那么if,elseif后面的语句都会执行，并不是互斥关系了。    不知道是哪里出错或理解有误，请指教! main() { 	int c; 	int b = 0; 	while  ((c = getchar()) != EOF) { 		if (c == '1') { 			b='1'; 			printf("hello\n"); 		} 		else if (b == '1') 			printf("xx\n"); 	} }

user: user-5
content: 引用 1 楼 lm_whales 的回复:你这个提问，有点含糊不清：  if 和 else if else 是并列的分支 只有 条件表达式是逐个测试的，执行语句，只会执行一个分支的 一旦任意分支的分支语句执行以后，整个 if  else if else 就执行完成了，其他部分就不再执行了。   if(c1) s1; else if(c2)s2; else s3;  s1,s2,s3;三个语句只有一个能够得到执行。 c1,c2,会挨个测试，直到有一个条件满足（值为为非零） 执行该分支为止。  所有条件都为0， 执行else 分支 即s3 。 无else，在没有一个条件能够满足时，什么也不做。 if 结构是互斥的，只要一个分支执行了，其他分支都不会再执行了。 最前面的条件优先判断，不满足条件，才会继续判断以后的其他条件。  这位讲解的真是耐心~

user: user-1
content: 你这个提问，有点含糊不清：  if 和 else if else 是并列的分支 只有 条件表达式是逐个测试的，执行语句，只会执行一个分支的 一旦任意分支的分支语句执行以后，整个 if  else if else 就执行完成了，其他部分就不再执行了。   if(c1) s1; else if(c2)s2; else s3;  s1,s2,s3;三个语句只有一个能够得到执行。 c1,c2,会挨个测试，直到有一个条件满足（值为为非零） 执行该分支为止。  所有条件都为0， 执行else 分支 即s3 。 无else，在没有一个条件能够满足时，什么也不做。 if 结构是互斥的，只要一个分支执行了，其他分支都不会再执行了。 最前面的条件优先判断，不满足条件，才会继续判断以后的其他条件。