数字字符0的ASCII值为48,若有以下程序: main() { char a=’1’,b=’2’; printf(“%c,”,b++); printf(“%d\n”,b-a); } 程序运行之后的输出结果是: 3,2 50,2 2,2 2,50
main() { char a=’1’,b=’2’; printf(“%c,”,b++); printf(“%d\n”,b-a); }
虽然程序跑出来结果是c,但是还是不太理解。printf()函数先入栈再出栈,所以应该先执行后面的b++,然后再打印。那么执行b+1和入栈哪个在前呢?从结果来看的话,那就是先将b的值‘2’保存在栈中,然后b+1,最后将栈中的值取出来并打印。