if (year %04==0) if (year %100!=0)leap=1; y else if (year%400=0)leap=1; i if (leap)printf(" %d is a leap year. n" year); else printf(" %d is not a leap year. n"year) 程序演示 利用逻辑运算能描述复杂条件的特点,可将上述程序优化如下: maino Sint year, printf("Please input the year: scanf(%od",&year) if((year%4-0&&year%100!=0)(year%400=0) printf("%/od is a leap year. In"year) else printf("od is not a leap year. n",year)
if (year % 4==0) {if (year % 100 != 0) leap=1;} else {if (year%400==0)leap=1; } if (leap) printf("%d is a leap year.\n",year); else printf("%d is not a leap year.\n",year); } [程序演示] 利用逻辑运算能描述复杂条件的特点,可将上述程序优化如下: main() {int year; printf("Please input the year:"); scanf("%d",&year); if ((year%4==0 && year%100!=0)||(year%400==0)) printf("%d is a leap year.\n",year); else printf("%d is not a leap year.\n",year); }
4.说明 (1)i后面的“表达式”,除常见的关系表达式或逻辑表达式外, 也允许是其它类型的数据,如整型、实型、字符型等。 (2)i晤句允许嵌套,但嵌套的层数不宜太多。在实际编程时 应适当控制嵌套层数(2~3层)。 (3)“语句组1”和“语句组2”,可以只包含一个简单语句,也可 以是复合语句。 务必牢记:不管是简单语句,还是复合语句中的各个语句,每个 语句后面的分号必不可少! 例如,[案例4]中的 if(numI>num2) max-num1 else max=num2;语句: i行后面的赋值语句“max=numl;”分号不能省略。但不要误认为if 和else是2个独立的语句,它们都属于i语句中的一部分,else是if语句 的子句
4.说明 (1)if后面的“表达式” ,除常见的关系表达式或逻辑表达式外, 也允许是其它类型的数据,如整型、实型、字符型等。 (2)if语句允许嵌套,但嵌套的层数不宜太多。在实际编程时, 应适当控制嵌套层数(2~3层)。 (3)“语句组1”和“语句组2” ,可以只包含一个简单语句,也可 以是复合语句。 务必牢记:不管是简单语句,还是复合语句中的各个语句,每个 语句后面的分号必不可少! 例如,[案例4.1]中的: if (num1>num2) max=num1; else max=num2;语句: if行后面的赋值语句“ max=num1;”分号不能省略。但不要误认为if 和else是2个独立的语句,它们都属于if语句中的一部分,else是if语句 的子句
432条件运算符 般格式:表达式1?表达式2:表达式3 条件表达式中的“表达式1”、“表达式2”、“表达 式3的类型,可以各不相同 2.运算规则 如果“表达式1?的值为非0(即逻辑真),则运算结果 等于“表达式2的值;否则,运算结果等于“表达式3”的 值。如图42所示 3.运算符的优先级与结合性 条件运算符的优先级,高于赋值运算符,但低于关 系运算符和算术运算符。其结合性为“从右到左”(即 右结合性)
4.3.2 条件运算符 1.一般格式: 表达式1?表达式2:表达式3 条件表达式中的“表达式1” 、 “表达式2” 、 “表达 式3”的类型,可以各不相同。 2.运算规则 如果“表达式1”的值为非0(即逻辑真), 则运算结果 等于“表达式2”的值;否则,运算结果等于“表达式3”的 值。如图4-2所示。 3.运算符的优先级与结合性 条件运算符的优先级,高于赋值运算符,但低于关 系运算符和算术运算符。其结合性为“从右到左”(即 右结合性)