还是C语言问题~~小女子不胜感激大家!

来源:百度知道 编辑:UC知道 时间:2024/05/23 18:19:00
1、若有定义inta=12,n=5,则表达式a%=(n%2)运算后,a的值是?
2、有以下程序
main()
{char a=‘a’,b;print("%c,",++a);printf(%c\n",b=a++);}
程序运行后输出的结果是?
3、设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c>d);后n的值为?

0 %是模除 取余数 5跟2取余为1 任何数跟1取余都为 0

bb 第一次print时 是++a 先加再打印所以是 第二次print时因为a已经是b了 但是是先打印再++ 所以两次结果一样

2 &&是短路运算符 当左边是假时右边已经没必要运算 所以不会执行 n不变

1、若有定义inta=12,n=5,则表达式a%=(n%2)运算后,a的值是?
把他展开a=a%(n%2)~~~5%2=1;12%1=0;~~a的值为0;
main()
{char a=‘a’,b;print("%c,",++a);printf(%c\n",b=a++);}
这是叫你看++的前后print("%c,",++a)~~++在a的前面比逗号高
printf(%c\n",b=a++);}++在a的后面先输出a而a才++

程序运行后输出的结果是?
3、设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c>d);后n的值为?
当左边是假时右边已经没必要运算 所以不会执行 n不变
~~看见这种题就让我回忆起几个月前自学C时的辛酸
自学不容易~~~~

1. 0
-> a%=n%2 ==> a=a%(n%2)=12%(5%2)=12%1=0.
2. b,b
-> a首先为'a',执行print("%c,",++a),此时a='b',接着执行printf("%c\n",b=a++),此时b='b',所以打印'b',之后a成了c,但是没有打印.
3. 2
-> m=a>b使m的值为0,不再计算后面的表达式,所以n依然为2.

n%2为1(5除2余1),a%=1可理解为a=a%1值为0

在运行print("%c,",++a)这步时,因为a先自加,所以a值