一道c语言问题

   更新日期:2024.05.17
呵呵这个句子挺有意思!老汉看看!等会给你结果

结果出来了!我给你最准确的答案!因为我是在汇编级调试出来的!
代码,printf("%3x\n",(x%y,x-y,x+y)); 意思是输出一个16进制数
这个数一共占3位,这个数不够3位时,在其前面补空格。
如果改成printf("%03x\n",(x%y,x-y,x+y));那么就是在前面补0了不是空格了,改成后者比较直观一些。

代码的具体执行情况是这样的,(x%y,x-y,x+y)这个代码中编译器只
识别其中的"x+y"其他的全部省略到。所以这个式子实际上就是等于
printf("%3x\n,(x+y)); 而已。

这是分析的代码:
218: int x=10,y=20; //c代码
004010A2 mov dword ptr [ebp-4],0Ah //向x赋值
004010A9 mov dword ptr [ebp-8],14h //向y赋值
219: printf("%04x\n",(x%y,x-y,x+y));
004010B0 mov eax,dword ptr [ebp-4] //取x值
004010B3 add eax,dword ptr [ebp-8] //用x值+上y的值
004010B6 push eax //把上面运算的和压入
004010B7 push offset string "%03x\n" (0043119c)
004010BC call printf (004084b0) //调用printf
004010C1 add esp,8 ///平栈

以上有问题可以联系我!用短消息!

danycive别瞎扯了:
其实很简单,3x表示输出3位的16进制数,printf参数1里的格式只有一个输出即:%x 所以就是说输出(x%y,x-y,x+y)这个表达式的值,而由于是","运算符,所以结果是最后一个表达式,即x+y,而x+y=30,30的16进制数结果就是3E.因为需要3位输出,所以结果就是" 3E",记得有个空格哦.

我觉得答案应该是3e1
(x%y,x-y,x+y)是要输出的计算式 这是逗号运算符 前面两个式子并不影响或者说改变x y的值,而真正输出的应该是x+y的值30 指数形式表现出来应该是3*10(1次方) 所以我认为结果应该是3e1

结果不错,他输出用的是16进制,程序逗号表达式输出荚果是30,用16进制就是1E了,呵呵.

  • 13839445841 :C语言问题求解,在线等,急!!!
    芮阳终2315 :答:1、根据题意每天从区间1~N中,依次深度-1,遇到某个深度0时停止作业,所修改的区间就是当日作业区间。2、独立函数实现一天作业(workForDay)。参数flag为1显示作业过程,如不需要传0。3、init函数为输入并返回动态数组。include <stdio.h> include <malloc.h> int len=0;//路面长度 int *init(...
  • 13839445841 :有一道C语言题目我比较疑惑,希望大家给予详细讲解,如果理由充分的话我...
    芮阳终2315 :答:这样写才正确,所以不正确的是选项C.- D:if圆括号内字符常量的值为0,也就是为假,则不执行后面花括号内的语句,此选项没有任何问题。
  • 13839445841 :C语言的一道问题。
    芮阳终2315 :答:include<stdio.h>unsigned fun6(unsigned num){ unsigned k = 1; do{ k*=num%10 ;num/=10;//这里应该是num/=10;}while (num);return k;}main(){ unsigned n=26;printf( "%d\n",fun6 ( n ) );//少个;}代码改过之后,输出的的确是12 fun6函数实现的是得到一个整数...
  • 13839445841 :请教大神们一道c语言的题,有关于for循环的 题目是这样的,程序段运行...
    芮阳终2315 :答:答案是:B. 7 4 理由如下:第一个循环,整个循环体执行后,输出(x=)7,这个没有疑问,执行完循环,for(x=10;x>3;x--)执行x--操作,此时x=6,满足x>3条件,进入第二个循环。第二个循环,x=6不满足if条件,执行2次--x操作,输出(x=)4,执行完循环,for(x=10;x>3;x--)...
  • 13839445841 :一道c语言的题目:计算a、b之间所有奇数的和
    芮阳终2315 :答:一、算法分析:要计算a b之间所有奇数和,那么最朴素的算法可以设计如下:1、输入a,b值;2、循环遍历a b之间的所有数值,如果为奇数,则累加;3、输出结果。二、算法优化:1、由于连续奇数之间差值为2,所以可以判断出第一个奇数,然后依次加2得到所有奇数,将所有奇数累加即可。2、连续奇数属于等差...
  • 13839445841 :C语言编程问题
    芮阳终2315 :答:1、输入有范围,两个变量输入都需要验证,方法变量处置范围以外,循环判断输入。2、天数循环计数,日期0~6周期自增。用变量累加计数结果。下面是演示代码:include<stdio.h> int main(){ int i,j,a=7,n=366,cnt=0;while(a<0 || a>6)printf("请输入a的值(0~6):"),scanf("%d",&a)...
  • 13839445841 :C语言的一道题 求助求助
    芮阳终2315 :答:一、统计输入的字符个数 同学们在学习C语言课程中,经常会遇到一道题,就是要求你写一个C程序,这个C程序能够读取你从键盘上输入的字符,并且统计其中的字符个数,最后输出总的字符个数并且把这些输入的字符再输出来。不少同学遇到这道题没啥思路,不知该如何上手。其实需要按照分解题目、每个分解的...
  • 13839445841 :关于C语言的一道问题如下,为什么答案是AUGN而不是LANG?
    芮阳终2315 :答:首先正确答案应该是ANGU,AUGN也是错的。下面是分析:因为*p++是先使用p的当前值,然后自加。当*p++!='u'执行完后,p已经完成了自加,指向了下一个字符。开始p指向l,l不等于u,执行循环前,p完成自加指向a,然后输出'a'-'a'+A'等于'...
  • 13839445841 :一道c语言选择题需要详细解析
    芮阳终2315 :答:第一个式子:a + b = 8 , a - b = 2 ,前者!= 后者,正确,所以为真,输出1 第二个式子:先算括号里的, y -= 6.1 = 0.4 , x <= 0.4,错误,所以为假,输出0 答案选:A
  • 13839445841 :一道C语言很简单的题目,懂C语言的进来帮忙解下
    芮阳终2315 :答:首先要知道? :这是一个三目运算符,如 (表达式)? x : y, 意思是说如果表达式是正确的,那么就选择x,如果错误的就选择y。那我们看这里,可以分成三部分(a++<b) ? (a++):(c<d?a++:d)。而后面的(c<d?a++:d)又可以分成三部分(c<d) ? (a++):(d)。我们先看第一个式子...
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网