簡體   English   中英

如何解決“下標值既不是數組也不是指針也不是矢量”

[英]How to solve “subscripted value is neither array nor pointer nor vector”

我正在解決C編程測驗。

測驗問題是“以下代碼snnipet的輸出是什么?”

uint32_t v = 0xdeadbeef;
printf("%02x", (char *) v[0]);

or uint64_t? 

老實說我不明白這個問題,所以我在本地機器上進行了測試。

#include<stdio.h>
#include<stdint.h>

int main() {
    uint32_t v = 0xdeadbeef;
    printf("%02x", (char *) v[0]);    /* (1) */

    int64_t w = 0xdeadbeef;
    printf("%02x", (char *) w[0]);    /* (2) */

}

我在(1)和(2)上遇到編譯錯誤。

這是錯誤消息

num1.c:在函數“ main”中:錯誤:下標值既不是數組也不是指針也不是向量

因此,對於本帖子中的問題, 我如何沒有編譯錯誤的情況下測試此代碼?

預期輸出: deadbeef00

我認為問題是關於在內存布局中排列的四個字節uint32_t的第一個字節。 這取決於字節序。 如果要查找輸出,可以檢查此代碼。

#include<stdio.h>
#include<stdint.h>

int main() {
    uint32_t v = 0xdeadbeef;
    char* pv = (char*)&v;
    printf("%02x\n", (uint8_t)pv[0]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM