int i=3;printf(“%d,%d尀n”,i,i++); 此语句的运行结果 最好讲讲

2024-12-05 09:31:59
推荐回答(5个)
回答1:

printf("%d,%d,%d",i,i++,i++);输出3,3,3正确。有两个原因供参考:

  1. i++是后++,要等输出结束后才执行加1运算;

  2. 即便是前++,如printf("%d,%d,%d",i,++i,++i);,输出也不会是3,4,5,而应该是5,5,4。因为最后一个i变成4后就压栈了,中间一个在4基础上+1自然是5,最前面的一个i值未变。当然这还与编译器有点关系,如果某编译器要等把所有列表项计算完再压栈,那这里输出就应该是5,5,5了!

按照这些规则,printf("%d,%d,%d",i+8,i+=5,i--);的输出应该是16,8,3而不应该是16,8,4。


回答 “风雷雪电”:

#include "stdio.h"

void main(void){

    int i=3;

    printf("%d,%d,%d\n",i,i++,i++);

别忘了i++,i++都是后++……

回答2:

continue语句是直接进入下一次循环,从前面的if语句看,如果i为3的话,就执行continue而忽略掉printf
语句.
所以作用是打印1到4的数字除了3

回答3:

结果为3,3,一个3就是i本身,第二个三是(i++)的值,(i++)的值是i本身但是最后的i变了i加一变成了4,

回答4:

4 3
第一个i 是 ++之后的值 第二个i 是没++之前的值 因为是i++所有是先用后加
你要问我结果为什么是这样 我也不知道 编译器这么决定的 我用的linux gcc

回答5:

3,3,
printf执行完后i=4, i++表示引用后 i+1, 如果++i表示引用前先加1