看板 C_and_CPP 關於我們 聯絡資訊
請教一下 最近在看linux code 底下的result,result1是怎麼算出來的 為什麼每次執行都不同 謝謝 #include <stdio.h> main() { unsigned char page[4] = {0xaa,0xbb,0xcc,0xdd}; unsigned long result; unsigned long result1; result=((unsigned long)page & 0xffff0000) >> 16; result1=(unsigned long)(page) & 0x0000ffff; printf("result=%ld\n",result); printf("result1=%ld\n",result1); } #./test result=6924 result1=14832 #./test result=55990 result1=36272 #./test result=37106 result1=27808 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.50.149.237 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1567134830.A.727.html
sarafciel: 你直接用page是丟unsigned char *回來 也就是指標 08/30 11:25
sarafciel: 你如果是想讓page內的值拆2byte出去給result應該這樣寫 08/30 11:29
sarafciel: result=(*(unsigned long*)page & 0xffff0000) >> 16; 08/30 11:32
sarafciel: 另外long的長度是會變的 我猜你是用32bit的機器? 08/30 11:35
Lipraxde: 我猜 64bit 08/30 19:13
liptonbin: 64bit沒錯 08/30 22:41
dces4212: PIE嗎 09/01 16:20
b0920075: aslr吧,stack 上aslr本來就會起作用 09/01 19:02
ando5566: 這時候你關掉小畫家再執行又會變;重開機再執行也會變 09/07 21:02