加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

基本程序,有趣的输出?说明

发布时间:2020-12-16 10:53:49 所属栏目:百科 来源:网络整理
导读:我正在学习指针,我正在从教程中运行这个程序,它提供了一些有趣的输出. #include stdio.hint main () { int var = 20; /*actual variable declaration */ int *ip; /*pointer variable declaration*/ ip = var; /*store addres of var in ip variable*/ print
我正在学习指针,我正在从教程中运行这个程序,它提供了一些有趣的输出.

#include <stdio.h>

int main () {

    int var = 20; /*actual variable declaration */
    int *ip; /*pointer variable declaration*/

    ip = &var; /*store addres of var in ip variable*/

    printf("Address of var variable: %xn",&var);

    /*address stored in ip variable*/
    printf("Address of stored in ip variable: %xn",ip);
    /*access the value using pointer */
    printf("value of *ip variable: %xn",*ip);

    return 0;

}

根据我的理解,该网站说我的输出应该是两个匹配的内存位置,而值为20的“* * ip变量”部分.我对内存位置没有任何问题,它们都像人们想象的一样,最后一部分,它告诉我* ip变量的值是14?

Address of var variable: 6d73b8cc
Address of stored in ip variable: 6d73b8cc
value of *ip variable: 14

这里发生了什么?用gcc编译,它给出一个关于格式%x的警告,期望一个无符号整数,但参数2的类型为….

MorePointers.c:10:9: warning: format ‘%x’ expects argument of type ‘unsigned int’,but argument 2 has type ‘int *’ [-Wformat=]
  printf("Address of var variable: %xn",&var);
         ^
MorePointers.c:13:9: warning: format ‘%x’ expects argument of type ‘unsigned int’,but argument 2 has type ‘int *’ [-Wformat=]
  printf("Address of stored in ip variable: %xn",ip);

请纠正我,如果我错了,但可能是由于格式,当期望无符号整数时可能导致数字不是20?作为无符号整数的值在0到65,535或0到4,294,967,295之间,而整数在-32,768到32,767或-2,147,483,648到2,647之间?

解决方法

发生了什么事情,你已经将整数值20打印为十六进制值,正确显示为14.我怀疑你期望20十进制.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读