您的位置: 网站首页 > 程序开发 > C语言程序设计 > 第2章 基本数据类型及运算符 > 【2.8 上 机 实 验】

2.8 上 机 实 验

 

2.8 

本章涉及数据与数据类型、常量与常量定义、变量与变量说明、数据的运算、表达式与赋值语句等内容,都是C语言程序设计中非常重要的基本概念。现综合举例说明,以便读者能更深入地掌握本章涉及的内容。

1)写出下列程序的运行结果。

/* 文件名:chap02_6.cpp */

#include<stdio.h>

void main()/*注意转义符号\t\b的含义*/

{

    printf("The file name is c:\tools\booklist.txt\n");

    printf("1234567890123456789012345678901234567890\n");

}

运行结果:

The file name is c:oolooklist.txt

1234567890123456789012345678901234567890

2)分析下列运算的结果。

/* 文件名:chap02_7.cpp */

#include<stdio.h>

#define printt(x,y,z) printf("x=%d,y=%d,z=%d\n",x,y,z)  /*定义宏替换*/

void main()

{

    int x,y,z;

    x=y=z=2;

    ++x||++y&&++z;  /*由于++x后不为0,所以不再执行||后的++y&&++z*/

    printt(x,y,z);      /*输出:x=3y=2z=2*/

    x=y=z=2;

    ++x&&++y||++z;  /*由于++x&&++y后不为0,所以不再执行||后的++z*/

    printt(x,y,z);  /*输出:x=3y=3z=2*/

    x=y=z=2;

    ++x&&++y&&++z;/*由于是&&运算,要依次执行++x++y++z后才能得到结果*/

    printt(x,y,z);  /*输出:x=3y=3z=3*/

    /*虽然以下xyz的值都<0,但运行时遵从的规律不变*/

    x=y=z=-2;

    ++x||++y&&++z;

    printt(x,y,z);  /*输出:x=-1y=-2z=-2*/

    x=y=z=-2;

    ++x&&++y||++z;

    printt(x,y,z);  /*输出:x=-1y=-1z=-2*/

    x=y=z=-2;

    ++x&&++y&&++z;

    printt(x,y,z);  /*输出:x=-1y=-1z=-1*/

}

3)分析下列位运算的结果。

/* 文件名:chap02_8.cpp */

#include<stdio.h>

#define PR(x) printf("d=%d;octal=%o;hex=%x\n",x,x,x)/*定义宏替换*/

void main()

{

    unsigned a=0252,b=0xcc,x;

    printf("a=%u,b=%u\n",a,b);  /*输出:a=170b=204*/

    x=a&b;PR(x);    /*输出:d=136octal=210hex=88*/

    x=a|b;PR(x);    /*输出:d=238octal=356hex=ee*/

    x=a^b;PR(x);    /*输出:d=102octal=146hex=66*/

}

4)分析下列""运算的结果。

/* 文件名:chap02_9.cpp */

#include<stdio.h>

void main()

{

    int x=1,y=2,z=3;

    x+=y+=z;/*等价于:y=y+z;x=x+y;*/

    printf("%d\n",x<y?y:x);/*输出x6*/

    printf("%d\n",x<y?x++:y++);/*输出y5。输出后y1x不加1*/

    printf("%d,%d\n",x,y);  /*输出xy66*/

    printf("%d\n",z+=x>y?x++:y++);  /*输出z9。按优先级计算输出后y1*/

    printf("%d,%d\n",y,z);  /*输出yz79*/

    x=3;

    y=z=4;

    printf("%d\n",(z>=y&&y==x)?1:0);    /*输出:0*/

    printf("%d\n",z>=y&&y>=x);      /*输出:1*/

}

5)分析下列++--运算的结果。

/* 文件名:chap02_10.cpp */

#include<stdio.h>

void main()

{

    int a=5,b=4,x,y;

    x=a++*a++*a++;  /*后缀形式。先取x的值运算后再进行三次++运算*/

    y=--b*--b*--b;  /*前缀形式。先进行三次--运算后再取b的值相乘*/

    printf("a=%d,x=%d\n",a,x);  /*输出:a=8x=125*/

    printf("b=%d,y=%d\n",b,y);  /*输出:b=1y=1*/