4.if((++a >0) && !(b-- <=0))中的赋值问题

if((++a >=0) && !(b-- <0))在此处表示为,当前一项成立时,则执行a++,b--:当前一项不成立时,则执行a++

例如当a=-1,b=1时,因为a ++  = 0 所以++a >=0成立,继续有b-- = 0  所以 b-- <0不成立,又有 !(b-- <0),故此项也成立,所以此处if语句条件为真。

【例】以下程序的输出结果是()

#include<stdio.h>
int main()
{
int a = -1 , b = 1:
if((++a < 0)&& !(b-- <=0))
printf("%d%d",a,b);
else
printf("%d%d",b,a);
}

A.-11    B.01    C.10    D.00

【答案】C

【解析】当a = -1 , b = 1:时, 因为a+1 = 0 ,所以++a < 0 不成立,所以此处if语句不成立,只能执行else语句,由于此时a = 0 ,b = 1 ,故选C


5.static静态变量

static静态变量有如下特点:

①、如果未赋初值,则系统自动赋值为0

②、会保存被修改的值

③、生存周期会贯穿于整个程序运行期


【例】以下程序的输出结果为()

#include<stdio.h>
void incre();
int x = 3;
int main()
{
int i;
for(i = 1; i<x ;i++)
incre();
return 0;
}
void incre()
{
static int x = 1;
x*=x+1
printf("%d",x);
}

A.33    B.22    C.26    D.25

【答案】C

【解析】:第一次循环:i=1 小于x=3,跳入函数incre中,此时x =1,x=x*(x+1)=1*2=2,输出2:

第二次循环:i=2 小于x=3,跳入函数incre中,此时x =2,x=x*(x+1)=2*3=6,输出6:

故输出答案为26