x%(-3)不合法,b
中使用了逗号运算符,括号的返回值就是最后一个逗号后的表达式的值即a+b,
所以b的确是把a+b付给k。对于12(b),
定义和调用肯定不是一个意思,比方说如下两个函数定义:
void
a(){}
---(1)
void
b(){}
---(2)
我们不可以将(1)整行搬到(2)里吧,
void
b(){
void
a(){}
}
这是定义,但是我们可以在b里调用a,
如下:
void
b(){
a()
}
而递归调用就是自己调用自己,这也是可以的,比如
void
b(){
b()
}
如果 % 两边的操作数都为正数,则结果为正数或零;如果 % 两边的操作数都是负数,则结果为负数或零。C99 以前,并没有规定如果操作数中有一方为负数,模除的结果会是什么。C99 规定,如果 % 左边的操作数是正数,则模除的结果为正数或零;如果 % 左边的操作数是负数,则模除的结果为负数或零。例如:15 % 2 // 余 1
15 % -2 // 余 1
-15 % 2 // 余 -1
-15 % -2 // 余 -1
标准规定,如果 a 和 b 都是整数,则 a % b 可以用公式 a - (a / b) * b 算出。例如:
-15 % 2 == -15 - (-15 / 2) * 2 == -15 - (-7) * 2 == -1
%3d的意思是,给当前输出项默认最少分配三个输出位置,如果输出的内容少于三个字符,那么在其前面补上空格,如果多于三个字符,那么安原文输出printf("%3d",2)
结果就是:空格空格2
printf("%3d",22)
结果就是:空格22
printf("%3d",1234)
结果就是:1234
而%-3d正好相反,是在输出项后面补上空格
如:
printf("%-3d",2)
结果就是:2空格空格
以此类推
明白了么?