• 【程序员面试宝典】第五章 程序设计基本概念


    2013-07-28 19:40:41

    面试宝典上的题目设计到而定东西很碎,很繁琐,不是针对数据结构与算法的考查,准备在两周内看完,并把一些自己美考虑到的记下来,方便日后复习。

    考查点:自增运算++、与解引用*的优先级,printf函数参数的压栈顺序

    *(ptr++) += 123;  注意+与=之间不能有空格,否则报错 error C2059: syntax error : '='

    另外,该语句的执行等价于

    *ptr = *ptr + 123;

    ptr++;

    而不是

    *(ptr++) = *(ptr++) + 123;

    printf函数参数的压栈顺序是从右向左的,因此printf("%d,%d ",*ptr,*(++ptr));先进行*(ptr++),然后*ptr。

    疑问:

    包括《C++primer》等在内的权威书籍中都指出自增运算++、与解引用*的优先级是相同的,而且结合性是自右向左,根据这种优先级,如何解释此处的情况??

    代码:

     1 #include <iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     int array[] = {6,7,8,9,10};
     7     int *ptr = array;
     8 
     9     *(ptr++) += 123;  //+与=之间不能有空格,否则报错 error C2059: syntax error : '='
    10     printf("%d,%d
    ",*ptr,*(++ptr));
    11 
    12     return 0;
    13 }

    运行结果:

    8,8
    请按任意键继续. . .

    考查:数据类型的装换以及数据在内存中的表示方式

    (int)fvar是进行强制类型转换;

    (int&)fvar:fvar地址开始的sizeof(int)个字节对应的int型数据;与fvar在内存中的表示方式有关。

    float采用浮点表示方法,最高位为符号位,接下来的23位为阶码位,第8位为尾数。

    代码:

     1 #include <iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     float fvar = 1.0f;
     7 
     8     cout<<"test fvar = "<<fvar<<endl;
     9     cout<<(int)fvar<<endl;
    10     cout<<&fvar<<endl;
    11     cout<<(int&)fvar<<endl;
    12     cout<<boolalpha<<( (int)fvar == (int&)fvar )<<endl;
    13 
    14     fvar = 0.0f;
    15     cout<<"test fvar = "<<fvar<<endl;
    16     cout<<(int)fvar<<endl;
    17     cout<<&fvar<<endl;
    18     cout<<(int&)fvar<<endl;
    19     cout<<boolalpha<<( (int)fvar == (int&)fvar )<<endl;
    20 
    21     return 0;
    22 }

    运行结果:

    test fvar = 1
    1
    0018FA18
    1065353216
    false
    test fvar = 0
    0
    0018FA18
    0
    true
    请按任意键继续. . .
  • 相关阅读:
    最新第四套人民币冠号大全
    使用Java程序调用MatLab
    Android 横屏时禁止输入法全屏
    linux 从命令行自动识别文件并将其打开的命令
    deep learning 的java库
    重磅!神经网络浅讲:从神经元到深度学习
    开源的c语言人工神经网络计算库 FANN
    开源java神经网络组件Joone、Encog和Neuroph
    基于Storm 分布式BP神经网络,将神经网络做成实时分布式架构
    git:could not open a connection to your authentication agent
  • 原文地址:https://www.cnblogs.com/youngforever/p/3221636.html
Copyright © 2020-2023  润新知