c/c++笔试题目1

来源:互联网 发布:ubuntu卸载anaconda3 编辑:程序博客网 时间:2024/06/06 03:23

c语言中printf计算参数时从右向左压栈

#include <stdio.h>int main(){    int arr[] = {6, 7, 8, 9, 10};    int *ptr = arr;    *(ptr++) += 123;    //因为c语言中printf计算参数时从右向左压栈(从右向左计算),所以输出 8, 8    printf("单句实现:%d, %d\n", *ptr, *(++ptr));     /*    printf("两句实现:%d, ", *ptr);    printf("%d\n", *(++ptr));//输出 7, 8    */    getchar();}

哪种写法较好?

写法1:

//a is a variableif('A' == a){    a++;}

写法2:

if(a == 'A'){    a++;}

写法1较好,如果此时误把==写成=,因为编译器不允许对常量赋值,所以可以检查到错误。

输出结果有什么不同?

程序1:

#include<iostream>using namespace std;int main(){    int a, x;    /*  1、 a=0,!x 等于1,然后x自增:x=1    2、 a++,之后a=1,满足a<=1,!x 等于0,不满足,然后x自增:x=2    */    for (a = 0, x = 0; a <= 1 && !x++;)    {        a++;    }    cout << a << " " << x << endl;//1 2    getchar();    return 0;}

程序2:

#include<iostream>using namespace std;int main(){    int a, x;    /*  1、 a=0,!x 等于1,然后x自增:x=1        2、 a++、a++ ,之后a=2,不满足a<=1,退出    */    for (a = 0, x = 0; a <= 1 && !x++; a++)    {        a++;    }    cout << a << " " << x << endl;//2 1    getchar();    return 0;}