从提供的图片上看,“!=”的优先级确实高于“=”,字符c被赋值的是0或者1,
当输入“?”的时候,('?'!='?')的值是0,跳出循环,不会有结果输出;
当输入其他字母的时候,(c!='?')的值是1,输出的结果应该是1对应的ACSII码的字符的前一个字符(因为输出的是--c),也就是0(NULL),正常应该是不输出结果的。
如果给(c=getchar())加括号,那么输入字母的时候,应该是输出相对应的前一个字母,比如
输入Y,输出X;
输入N,输出M;
输入?,就跳出循环了,程序运行结束。
另外要补充一句,“=”的返回值是被赋值之后的值,比如(c=0)的返回值是0,所以不会因为while里面是一个赋值表达式而会陷入死循环。这样一个很好的例子就是a=b=c=3;肯定a、b、c都被赋值为3了。
定义一个char flag标志,输出提示,提示用户输进Y/N是否继续,可以使用do{
................//你想循环的代码
printf("\nContinue(Y/N) Input: ")
scanf("%c",&flag)
}while(flag=='y'||flag=='Y')
问题点应该是出在scanf,你输入时候的问题,程式码我测试过没问题,我将num直接给予100,c判断部分,直接给'n',可以完整执行,顾问提点应该出在scanf,你输入时候不知道操作到什麼