当前位置: 代码迷 >> C语言 >> [问题已解决][求助] C语言的题目
  详细解决方案

[问题已解决][求助] C语言的题目

热度:150   发布时间:2006-07-14 22:34:20.0
[问题已解决][求助] C语言的题目

1.下述程序的输出结果是
#include<stdio.h>
void main()
{ char a=3,b=6;
char c=a^b<<2;
printf("\n%d",c);
}

2. 设x和y都是int类型,且x=100,y=200,则 printf(“%d%d\n”,(x,y));的输出结果是


[此贴子已经被作者于2006-7-15 14:08:29编辑过]

搜索更多相关的解决方案: C语言  

----------------解决方案--------------------------------------------------------
2
y是负数


----------------解决方案--------------------------------------------------------
first:

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
char a = 3, b = 6, c;

c = a ^ b << 2;

printf("%d\n", c);
}

/**************************************************************************
*
* comment: a = 3, => binary is: 011
*
* b = 6, => binary is: 110
*
* (b << 2) => (b = 24) => binary is: 11000
*
* (a ^ b) => 011 ^ 11000 => result: 11011, so => (c = 27)
*
* so result: c = 27
*
***************************************************************************/

----------------解决方案--------------------------------------------------------

第一题是27

因为<<的优先级要高于^
所以b先左移两位为 00011000 在与a(00000011)做异或 得00011011 为27


----------------解决方案--------------------------------------------------------
second:

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
int x = 100, y = 200;

printf("%d %d\n", (x, y));

exit(0);
}

/***********************************
*
* comment: 200, 0
*
* because: ',' symbol return right value
************************************/



----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-14 15:02:47
摄政王:多尔滚

等 级:新手上路
帖 子:148
专家分:0
注 册:2006-7-9
  得分:0 
first value is specify 200

----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-14 15:07:24
grub2linux

等 级:新手上路
帖 子:335
专家分:0
注 册:2004-12-25
  得分:0 
对不起,我看错了,我看成CHAR型了。。嘿嘿

这是考逗号运算符的题,
(x,y)的值应该是 y

[此贴子已经被作者于2006-7-14 23:24:51编辑过]


----------------解决方案--------------------------------------------------------

昨天第一次来这个论坛,没想到大家都很热心,相信在这个论坛,我会慢慢成长的,尽管现在对与C还不是很懂,希望在不久的将来我也可以帮助别人

第一题中,(b << 2) => (b = 24) => binary is: 11000
(a ^ b) => 011 ^ 11000 => result: 11011, so => (c = 27)
还是不太明白,左移是怎么移的啊?异或又是怎么算的呢?


至于第二题, 我是觉得是逗号表达式,所以就是:printf("%d%d\n",y);运行后:2001999
1999是随便出来的一个数,我是这么想的,不知道对不对?
可是书上的答案却是200


----------------解决方案--------------------------------------------------------
  相关解决方案