[英]Subscripted value is neither array nor pointer nor vector at array index
[英]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”中:錯誤:下標值既不是數組也不是指針也不是向量
因此,對於本帖子中的問題, 我如何在沒有編譯錯誤的情況下測試此代碼?
預期輸出: de
, ad
, be
, ef
或00
我認為問題是關於在內存布局中排列的四個字節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.