C语言里=这个符号是赋值符号而不是等于号,有赋值符号的式子,应该从右向左计算,并把右边的最终结果赋给左边的变量,因此k=-k的意思就是先对k这个变量取负值,然后将k的负值赋给k这个变量。
C语言里的等于号是==,除号是/,乘号是*。
while(--k) printf("%d\n", k=1)表示当--k不等于0时,输出1。
该语句等价于:
while(--k) // 如果--k不为0,则执行循环体语句{
k=1 // 对变量k进行赋值
printf("%d\n", k) // 输出k的值,即1
}
其中printf("%d\n", k=1)表示先将常量1赋值给变量k,之后输出变量k的值。