首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构和代码解释

结构和代码解释
EN

Stack Overflow用户
提问于 2015-02-26 23:29:11
回答 2查看 85关注 0票数 1

我正在准备期中考试,跟不上这门课。

int main (void)中,第一个printf应该打印Jello,3.14159,我遵循它打印Jello,3.14的方式,而不是159 - u.q.a指向哪里?

代码语言:javascript
复制
/* 01234567890:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ */
#include <stdio.h>
#include <string.h>

struct R {
    char n[6];
    int a;
};

struct S {
    double p;
    struct R q;
};

struct S f(const struct R* x) {
    struct S a;
    a.q = *x;
    a.p = 3.142;
    return a;
}

char g(struct R* y) {
    strcpy_s(y->n, "Wee");
    y->a = 3;
    return *y->n;
}

int main(void) {
    char c;
    struct S u;
    struct R x = { "Jello", 159 };
    u = f(&x);
    printf("%s,%.2lf%d\n", u.q.n, u.p, u.q.a);
    c = g(&x);
    printf("%s,%d.142,%cee\n", x.n, x.a, c);
    x.n[0] -= 3;
    x.n[1] = 'r';
    printf("%seeeeeeeeee\n", x.n);

    return 0;
}
EN

回答 2

Stack Overflow用户

发布于 2015-02-26 23:55:02

第一个printf应该打印"Jello,3.14159“,我遵循它打印Jello的方式,3.14,但不是159...

“u.q.a”指的是哪里?

这两个问题都回答在一起。下面是相关的输出:

代码语言:javascript
复制
3.14159

它来自printf格式:%.2lf%d3.14来自于规范的第一部分,%.2lf,该规范规定,期望一个长浮点数,以2位精度显示数字。有关printf格式化的更多信息,请参阅维基百科:https://en.wikipedia.org/wiki/Printf_format_string

159来自u.q.a (这是它所指向的),并由%d在规范末尾引入到格式化中。它最初提供给具有int aR结构。它将成为S结构fq部分。

票数 2
EN

Stack Overflow用户

发布于 2015-02-26 23:57:21

u.q.ax(类型为struct R)获取整数a的值。实际上,u.q.ax.a相同,因为u(类型为struct S)中的指针q指向x的地址。

注:请对变量使用有意义的名称,以避免混淆,并使代码更容易和更快地阅读。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28746402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档