几道c语言问题

2.设a.b.c.m.n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,,则逻辑表达式(m=a>b)&&

(n=c>d)运算后,n的值为()

A.0 B.1 C.2 D.3

分析:答案是C,我选的是A,我的思路:a>b m=0, c<d n=0,所以运算后 n=0。我哪里

错了。

3.sizeof(double)是()

A.一种函数调用 B.一个双精度表达式 C.一个整型表达式 D.一个不合法的表达式

分析:答案是C,我认为它是一种函数调用。答案应该是哪个?

4.当用#define X 23.6f定义后,下列叙述正确的是()

A.X是实型常数 B.X是实型变量 C.X是一串字符 D.X是字符串常数

分析:答案是C,但我认为它应该是实型常量,该选A呀。给我解释一下。

5.设x,y均为int型变量,且x=10,y=3,则以下语句 printf("d,%d\n",x++,--y);的输出结果是( )

A. 10,3 B. 9,3 C. 9,2 D.10,2

分析:答案是D,我一开始算得是(11,2)
6.在c语言中,合法的字符常数是()

A. ‘\024’ B. ‘\x53’ C. ‘\22’ D. “\0”

分析:答案是B,我认为 C 也没错呀!

7.设有如下变量定义:
int i=8,k ,a ,b ;
unsigned long w=5 ;
double x=1.42 ,y=5.2 ;
则以下符合C语言的表达式是()
A. a+=a-=(b=4)*(a=3) B. x%(-3) C. a=a ,3=2 D. y=float(i)

分析:答案是A,我感觉 D 也没错。

2、a>b为假,将m赋值为0,当&&运算符前的为假时,其后的将不再进行运算与判断,故n的值并没有变化。
3.sizeof()其实是一个运算符,整个式子是表达式。
4.#define X 23.6f,这是一个宏定义,宏只是进行字符替换,此处声明后,在程序中使用X时,编译器会用后面的23.6f代替X。宏定义的本质就是字符替换
5.x++先使用x后运算加1, --y先运算减1后使用...输出的x,y是10,2
6.A、C、D都是\后直接是整数,不对。这种转义字符在书的后面附录都有表说明的
7.D. y=float(i) 这是错误的,没有这种写法,强制转换应该是y=(float)i,或者 y=(float)(表达式),
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-02
#include<stdio.h>
#include <string.h>
void main()
{
int a,b,c,d,m,n,x;
a=5,b=6,c=7,d=8,m=2,n=2;
x=(m=a>b)&&(n=c>d);
printf("x=%d\n",x);
}
2.这样的..它问的是n;n=2 已经告诉你了```我用上面程序调试过..
这个表达式的值是0没错啦..但是n=2 依然没有变拉..

3这是运用sizeof()所需要的内存空间大小..应该是整数表达式没错..
如果是函数调用的话应该会有 y=sizeof(double)才是的..

5.x++先输出后运算 --y先运算后输出...输出的x,y是10,2
所以输出后的x=11 ; y=2
6整数不是这样输出的..要有表达进制的 具体各种你最好看下课本...
7 强制转换是y=(float)i 所以D 有问题..
第2个回答  2008-03-02
2、a>b为假,将m赋值为0,这儿没错,当&&运算符前的为假时,其后的将不再进行运算与判断,故n的值并没有变化。
3、sizeof(double)中sizeof()其实是一个运算符,在形式相当于++。
5、你还没有真正的理解++和--在前和在后的区别,在前时这一个语句结束以后再对变量赋值,在后时先对变量赋值在看这一个语句。
6、‘\22’ 如果没错的话,那它是几进制的数值呢?本回答被提问者采纳
相似回答