在c语言中为什么x%(-3)不符合语法?

Python017

在c语言中为什么x%(-3)不符合语法?,第1张

%运算符需要两边都是整形,所以

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空格空格

以此类推

明白了么?