当前位置: 代码迷 >> C语言 >> 新手上路,请帮个小忙
  详细解决方案

新手上路,请帮个小忙

热度:276   发布时间:2006-09-09 13:31:54.0
新手上路,请帮个小忙
问题1:
用函数 GETCHAR() 和 PUTCHAR() 编写一程序,令起功能是:
当用户输入A时,程序输出B



问题2:
设a=1,b=2,c=4,计算表达式:(c=a!=b)&&(a==b)&&(c=b)
执行后啊,a,b,c的值和表达式的值


谢谢你的回答!!
搜索更多相关的解决方案: 函数  计算  新手上路  表达式  

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

#include"stdio.h"

void main()
{
char a;
a=getchar();
a='B';
putchar(a);
}


----------------解决方案--------------------------------------------------------
a=1,b=2,c=1,(c=a!=b)&&(a==b)&&(c=b) => 1&&0&&1=0;

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

谢谢了


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

第2题怎么算了啊,哎不会


----------------解决方案--------------------------------------------------------
以下是引用wangyongmin在2006-9-9 13:31:54的发言:
问题1:
用函数 GETCHAR() 和 PUTCHAR() 编写一程序,令起功能是:
当用户输入A时,程序输出B
if(getchar()==A)
{
printf("B");
}

问题2:
设a=1,b=2,c=4,计算表达式:(c=a!=b)&&(a==b)&&(c=b)
执行后啊,a,b,c的值和表达式的值
(c=(a!=b))&&(a==b)&&(c=b)
a=1!=b--->a!b==1--->c=1--->(c=(a!=b))=1
a==b=0

由于&&前面已经出现假,则不计算后面的表达式,此时(c=b)没有被执行

所以:a==1,b==2,c==1,表达式为0

谢谢你的回答!!

掌握运算符的优先级


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

谢谢你们的回答


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

前几天,我也碰到过类似的问题
我想问一下,后面c=b不执行是不是编译器的优化啊?


----------------解决方案--------------------------------------------------------
6六楼的回答很细啊!!!
让我开了眼界
学习c这么长时间没有考虑过这样的问题
谢谢!!!
----------------解决方案--------------------------------------------------------
以下是引用ldk0501在2006-9-9 21:13:49的发言:

前几天,我也碰到过类似的问题
我想问一下,后面c=b不执行是不是编译器的优化啊?

&&也叫短路与,例如0&&1,当编译器看到0时,就不会考虑1,整个表达式的值为假。
例如1&&1,当编译器看到1时,它还要考虑一下后面的一个是不是1。


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