请输入您要查询的百科知识:

 

词条 if语句
释义

if语句是指编程语言(包括c语言,C#,VB,汇编语言等)中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。if的返回值为真或假,可以用bool型变量进行存储,占用一字节

c语言提供了三种形式的if语句:

1、If(表达式)语句。

例如:

If(x>y)printf("%d",x);

2、If(表达式)语句1 else 语句2

例如:

If(x>y)printf("%d",x);

else print f("%d",y);

3、If(表达式1)语句1

else If(表达式2)语句2

else If(表达式3)语句3

else If(表达式m)语句m

else 语句 n

在每个语句中,可以有多个语句,但需要加上大括号

例:If(x>y) {printf("%d",x); break;}

3.if条件语句的隐蔽用法

变量1=(变量2or语句2>变量3or语句3)?变量4:变量5;

注意点:括号加在 " = " 与 " ? "之间,而且不可少。

此处有一个实例:测试数据的有效性。

if(!hUsbDevice){ //|| !ConfigIndex || !CurInterface || !UsbFuncs

RETAILMSG(1,(TEXT("In the USBDeviceAttach gain the Invalid parameter : !hUsbDevice\\r\")));

return NULL;

}

if(!hUsbDevice || !UsbFuncs ){ //|| !ConfigIndex || !CurInterface

RETAILMSG(1,(TEXT("In the USBDeviceAttach gain the Invalid parameter: hUsbDevice || !UsbFuncs \\r\")));

return NULL;

}

if(!hUsbDevice || !UsbFuncs || !CurInterface ){ //|| !ConfigIndex

RETAILMSG(1,(TEXT("In the USBDeviceAttach gain the Invalid parameter: hUsbDevice || !UsbFuncs || !CurInterface\\r\")));

return NULL;

}

if-else语句引入的问题-空悬else问题

if-else 语句引入了一种二义性问题称为空悬else (dangling-else) 问题,这种问题出现在当if 子句多于else 子句时。问题是这些else 子句分别和哪一个if 子句匹配。例如

if ( minVal <= ivec[ i ] )

if ( minVal == ivec[ i ] )

++occurs;

else {

minVal = ivec[ i ];

occurs = 1;

}

程序的缩进形式表明程序员相信else 应该与最外面的if 子句匹配,然而在C++中空悬

else 二义性由以下规定来解决:else 子句与最后出现的未被匹配的if 子句相匹配。

在本例中if-else 语句实际的计算过程如下

if ( minVal <= ivec[ i ] ) {

// 空悬else 的解释结果

if ( minVal == ivec[ i ] )

++occurs;

else { minVal = ivec[ i ]; occurs = 1; }

要想改变这种缺省的空悬else 匹配效果一种方法是把后来出现的if 放在复合语句中

if ( minVal <= ivec[ i ] ) {

if ( minVal == ivec[ i ] )

++occurs;

}

else { minVal = ivec[ i ]; occurs = 1; }

编码风格建议:总是使用复合语句括号以避免在以后修改代码时可能出现的混淆或

错误

批处理内部命令

if 执行批处理程序中的条件处理

IF [NOT] ERRORLEVEL number command

IF [NOT] string1==string2 command

IF [NOT] EXIST filename command

NOT 指定只有条件为 false 的情况下, Windows XP 才

应该执行该命令。

ERRORLEVEL number 如果最后运行的程序返回一个等于或大于

指定数字的退出编码,指定条件为 true。

string1==string2 如果指定的文字字符串匹配,指定条件为 true。

EXIST filename 如果指定的文件名存在,指定条件为 true。

command 如果符合条件,指定要执行的命令。如果指定的

条件为 FALSE,命令后可跟一个执行 ELSE

关键字后的命令的 ELSE 命令。

ELSE 子句必须在 IF 之后出现在同一行上。例如:

IF EXIST filename. (

del filename.

)else(

echo filename. missing.

)

应为del命令需要一个新行终止,以下字句不会有效:

if exist filename. del filename. else echo filename. missing

由于else命令必须与if命令的尾端在同一行上,以下子句也不会有效:

if exist filename. del filename.

else echo filename. missing

如果都放在同一行上,以下子句有效:

if exist filename. (del filename.) else echo filename. missing

如果命令扩展名被起用,if会有如下改变

IF [/I] string1 compare-op string2 command

IF CMDEXTVERSION number command

IF DEFINED variable command

其中比较运算符可以是:

equ - 等于

neq - 不等于

lss - 小于

leq - 小于或等于

gtr - 大于

geq - 大于或等于

及 /i 开关;如果该开关被指定,则说明要进行的字符串比较不分

大小写。/i开关可以用于 IF 的 string1==string2 的形式上。这些

比较都是通用的;原因是,如果 string1 和 string2 都是由数字

组成的,字符串会被转换成数字,进行数字比较。

CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,除了它

是在跟与命令扩展名有关联的内部版本号比较。第一个版本

是 1。每次对命令扩展名有相当大的增强时,版本号会增加一个。

命令扩展名被停用时,CMDEXTVERSION 条件不是真的。

如果已定义环境变量,DEFINED 条件的作用跟 EXISTS 的一样,

除了它取得一个环境变量,返回的结果是 true。

如果没有名为 ERRORLEVEL 的环境变量,%ERRORLEVEL%

会扩充为 ERROLEVEL 当前数值的字符串表达式;否则,您会得到

其数值。运行程序后,以下语句说明 ERRORLEVEL 的用法:

goto answer%ERRORLEVEL%

:answer0

echo Program had return code 0

:answer1

echo Program had return code 1

您也可以使用以上的数字比较:

IF %ERRORLEVEL% LEQ 1 goto okay

如果没有名为 CMDCMDLINE 的环境变量,%CMDCMDLINE%

将在 CMD.EXE 进行任何处理前扩充为传递给 CMD.EXE 的原始

命令行;否则,您会得到其数值。

如果没有名为 CMDEXTVERSION 的环境变量,

%CMDEXTVERSION% 会扩充为 CMDEXTVERSION 当前数值的

字串符表达式;否则,您会得到其数值。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/4/15 17:15:04