前言:
測試學習是個理論簡單,但實作起來會遇到很多疑問的學習過程。曾經跟Sean Ellis 一起工作的曲卉寫的這本書不但實用,而且還訪問了一大票測試專家。
他們對於測試主題的選擇(大題目還是小題目)、AARRR漏斗的重點,還有測試團隊在組織內的發展也都有不同的見解。
我覺得很值得多看看,所以做了筆記跟大家分享。
這次分3 part,先來一串九個人我印象最深的測試心得,再來九個人的訪談摘要,最後是九個人對於組織與人的看法。enjoy~
..........
《硅谷增長黑客實戰筆記》曲卉
#Greylock Partner / Pinterest(圖片秀), Casey Winters
"不要只做優化,要做有高影響力的事情。不過,得先做優化累積影響力。"
#Mobile Growth Stack / Sound Cloud (Podcast), Andy Carvell
"不要把所有數字綁在一起看,用戶分群是有效優化的開始。"
# GloStation / Postmates(送餐), 陳思齊
"限制供給可以透過奇怪的方式,製造FOMO(害怕錯過fear of missing out) 社交地位(social status)等,讓產品流行"
# Growthstructures / Sofi Finance(學貸轉貸), Steven Dupree
"低垂果實摘完後,會陷入低潮與瓶頸。全公司(或跨團隊)的創新idea大匯集會讓大家一起幫忙,並且不要浪費對失敗案例的紀錄與策略學習。"
#Cerberus Interactive/Acorns (微型投資), Sami Khan
"醜陋、原始的廣告更像是朋友在對用戶說話,有更高機率穿透用戶的防衛心"
#Camera360(修圖), 陳思多
"漏斗的無限解構,原本以為是單純解決留存率問題,結果深究了四層(留存率—>推送更新覆蓋率—>推送更新展示率—>下載權限設定)才達到目的。"
#Square(支付), 羅揚 James Luo
"增長與嚕羊毛黨的鬥智鬥勇,對獎勵的設計要有吸引力,又要養成使用習慣,還要善用推薦者的資訊讓新用戶感受到個性化的感覺。"
#探探(校園招聘)/ 美圖(修圖), 韓知白
"要做增長先要備好基礎設施(行為數據後台,A/B測試框架),才能夠更快速迭代與勤能補拙。"
#專訪 Keep(運動)/豆瓣(社群), 張弦
"有些問題除了用數據作判斷外,直接問用戶可以達到更直接的效用,而且幫助增長團隊打開視野。"
---九篇專訪的摘要全文---
#9-1 Greylock Partner / Pinterest(圖片秀), Casey Winters
-北極星指標是會變動的
-產品(也就是核心地帶)通常是增長的投資報酬率最高的測試,但很難直接說服公司其他成員直接拿產品動刀。
-增長團隊一開始成立時候,選擇三不管地帶,以證明自己;之後才進展到核心地帶
-核心地帶的創造新價值、改善原有價值,通常是產品團隊負責。傳遞已有價值給更多人則是增長團隊負責。
-增長團隊必須是全職的,不能跟人共用成員,否則優先順序會被影響
-做測試時候,如何在容易衡量但效果慢跟全新設計但不知哪個因素產生作用之間做取捨?優化測驗要一個個做,改變方向測驗則直接直搗黃龍。而改變方向的測試才能反應高影響力。
-當低垂果實摘完後,要做高影響力需要高資源的測試需求,而不是低資源但也只需要低影響力的需求
#9-2 Mobile Growth Stack / Sound Cloud (Podcast), Andy Carvell
-對行動應用來說,留存是所有指標中最重要的,因為客人離開沒有成本,但留存會對你有無限好處。留存指標包含以日、週、月計算。
-增長團隊大約7-8人,包含產品經理、分析師、設計師、程序員,最多的是程序員。產品經理需要對分析、UI/UX設計、程序都略懂,才能跟他們溝通。
-以每週的循環討論測試設計、結果與去留。
-SC的做法不是所有用戶綁在一起看留存率,是用戶分群後看留存率,包含新用戶、流失後重新造訪用戶、重複使用用戶。
-當移動應用要藉由更版推送提升客戶體驗的時候,如何達到最好的整體效果?衡量指標是RRF 覆蓋率(reach), 相關性(Relevance), 頻率(Frequency) 三個都達到高水準則影響力最大。但覆蓋率是這當中最重要的
#9-3 GloStation / Postmates(送餐), 陳思齊
-我的前一間公司(Stolen),每個增長流程與工具都做得很好,但就是產品不夠好。當我到Postmaster之後發現他們什麼成長技巧都沒有,但產品很符合市場需求。
-增長最令人喜歡的是,能量化你的影響力,當你實驗做得好,結合了創造力與分析能力得出很好的想法,就像寫程式一樣,你做了某件事就有某個結果。這是令人上癮的。
-增長最令人不喜歡的是,會讓你偏向那些容易衡量並且很快衡量的東西。但有時候最重要的事情,例如產品與市場的契合度,反而不是容易衡量的。
-K因子(referral 用戶轉介人數)持續大於1是不可能的,尤其當你的產品越做越大,群體越來越多。即使是社交軟體,要讓k因子大於1 也需要一些違反自然規律的設計。
-稀缺性可以透過奇怪的方式,讓產品更加流行。從Stolen 得到的認知是,限制供給,造成稀缺性。心理因素是害怕錯過(FOMO) 社交地位(social status)等
-即使在矽谷,增長團隊也不多見。Google就沒有。但是FB就有一大批增長團隊並且擴散到其他地方。增長就是技術驅動,易於衡量的行銷。增長團隊更像升級版的行銷團隊,有了程序員的支持可以把推薦系統做得更精準,未來增長團隊會和市場團隊在一起而不是產品。
-用少於10%的流量,可以做任何測試。
#9-4 Growthstructures / Sofi Finance(學貸轉貸), Steven Dupree
-數學不會就是不會,增長沒效就是沒效。增長可以很快做出改變,並且追蹤哪些改變有效哪些無效。
-增長的低垂果實摘完後,會陷入疲乏,就需要大量idea。創新idea 兩種重要想法:每週五的全公司頭腦風暴 & 忠實紀錄失敗的測試並從中學到策略想法。
-增長團隊刷存在感兩種做法:(1) 在例會中說明有趣但違反直覺的實驗,已讓大家有印象(2) 把大象(重大影響力但耗資源)跟螞蟻(容易但效益有限)的實驗混合起來,避免人家覺得你沒貢獻或者只會做小事情
-新產品開始獲取客人的三種方法:(1) 付費搜索廣告,可以找到真的需要產品並且非常有興趣的人 (2) 抄競爭對手的做法,可以找到他們已經開發過的市場(3) 根據產品特殊屬性的增長手法
#9-5 Cerberus Interactive/Acorns (微型投資與機器人投資), Sami Khan
-靠創意的廣告狂人時代已經過去,excel 跟計算機才是你的好朋友。
-檢視總預算,跨通路預算調整(放大表現好的),通路內預算調整(用七天平均放大表現好的)
-2C新產品上線的建議是先在FB做小量A/B測試,找出好的再往其他通路擴散。測試前要設好追蹤,沒有追蹤,測試學習的迴路就不會成立。
-比起其他app,遊戲是最不需要擔心用戶獲取的,因為人們下載無成本;比較需要擔心的反而是用戶留存。因此要一小批一小批的獲取用戶後,關閉其他溝通通路,只針對這小群人做各種產品測試與改進,確定30 日留存率到達可用水準後才能繼續獲取用戶。
-臉書上,越醜的廣告表現越好。因為大家對電視已經疲乏,精美的廣告創意讓人想到電視會自動跳過,但粗糙的原始的則像是你朋友分享的。
#9-6 Camera360(Photo Editor), 陳思多
-漏斗的無限解構,以解決留存為例。原本想藉由app更新處理留存率低的問題,但發現更新覆蓋率不夠高,後來又發現問題是更新的展示率(被看到)低,而展示率低的原因又是app一開始下載時候的預設權限。所以回頭更改預設權限設定,在更改後次日留存率實現5%增長。(但如何在用戶已下載後調整權限啊)
-各地區的差異化溝通,以美國市場為例,經過逐一測試不同族群發現40+婦女喜歡此產品,於是將廣告視覺改為該族群會喜歡的可愛孩子展示功能,降低33%的獲客成本
-增長的成功要素是CEO的有意識支持。因為增長會用到很多資源,或是影響很多資源。若是沒有CEO的支持,無法成功。
-增長團隊需要的數據分析師,是對產品有深切了解的數據分析人,而不是純粹解讀數字。
#9-7Square(支付服務), 羅揚 James Luo
-留存主要是產品決定的,但在早期留存(D14-D90)增長可以起到很大作用,只要透過各種管道(信件、推送、Retargeting 廣告)重新提醒用戶,就會對早期留存產生明顯效用。
-要做全產品用戶推薦的指標的先決條件,是內部有堅實的大數據團隊,足以做獲客通路歸因。
-通路關鍵三大指標(CPA, ROI, LTV)中,最難建模的是LTV。因為涉及對長期留存率與資本折現率的重要假設。
-好的推薦系統會牽涉到三大項目,獎勵、曝光、轉化。其中獎勵的設計是與嚕羊毛黨鬥智鬥勇的活動。獎勵內容要考慮『有吸引力的額度、合適的條件限制、養成使用習慣的限制,累進式獎勵、考慮對稱式獎勵(利己又利人)』
-即使是最忠誠的用戶,也不會時刻記得你的獎勵項目。
-新用戶進來後,可以用推薦人的資訊提醒他們使用獎勵,不僅給新用戶個性化的感覺,也提醒新用戶『我確實獲得了某人的推薦』
#9-8 探探(校園招聘)/ 美圖(Photo Editor), 韓知白
-美圖的用戶留存指標設在N張照片保存,一開始是基於通路管理的需要,因為有些通路留存數據會有回饋延遲以及作假的問題。
-探探的市場部與增長部的區別在,市場部負責花錢,增長部不負責花錢。
-增長不是先做KPI管理,而是要有好的基礎設施(行為數據後台,A/B測試框架)才能開始觀測指標與迭代增長。
-快速迭代的價值在於,當你沒有人家的靈感,人家一次增長效果比你好3倍(+60% vs +20%)的時候,只要你迭代速度有三倍,還是可以得到一樣的成功增長效果。
-增長要避免的第一個坑就是局部優化,這裡改一點截圖,那裡改一點文案。其實也許改產品名字與圖標是最有效提升app商店轉化率的途徑。增長經理要能夠跳脫盒子思考(out of box thinking)
-剛開始做測試的人,要忘記喬布斯張小龍等產品的大神,他們是靠直覺也很少看數據:正常人要靠數據與即時反饋,勤能補拙。
#9-9 Keep(運動)/豆瓣(社群), 張弦
-全景漏斗,關心橫向的產品功能交互關係。當一個產品不只是工具,還有社交,內容等多種功能。可以根據不同功能設計指標,再看看功能
之間的交互拉提作用,決定整個產品後續的發展。而不是只看單一指標。
-量化與質化的兩腳思維,曾經做測試時候只看指標,以為是A與B的相關性,但從未想過中間還有個C。學到後就會在產品中安插小問卷直接問用戶,但要把握3個題目之內的精簡原則,不可以打擾用戶。
-加法與乘法,做增長後了解了加法與乘法的關係。增加一條溝通管道是加法,優化轉化率是乘法。一般來說,乘法的好處更大一些,但這也是基於加法已經帶來足夠的初始流量,否則盤子太小的乘法也沒啥意義。
-做產品像開船,動力與方向最重要。產品小的時候,著重動力,加速度要夠。產品體量大了後,動力已經比較足了,著重方向,往哪兒發展就更重要。
---以下是關於團隊的摘要---
#Greylock Partner / Pinterest(圖片秀), Casey Winters
"增長團隊必須是全職的,不能跟人共用成員,否則優先順序會被影響"
#Mobile Growth Stack / Sound Cloud (Podcast), Andy Carvell
"增長團隊大約7-8人,包含產品經理、分析師、設計師、程序員,最多的是程序員。產品經理需要對分析、UI/UX設計、程序都略懂,才能跟他們溝通。以每週迭代的循環討論測試設計、結果與去留。"
# GloStation / Postmates(送餐), 陳思齊
"增長最令人不喜歡的是,會讓你偏向那些容易衡量並且很快衡量的東西。但有時候最重要的事情,例如產品與市場的契合度,反而不是容易衡量的。"
#Growthstructures / Sofi Finance(學貸轉貸), Steven Dupree
"增長團隊刷存在感兩種做法:(1) 在例會中說明有趣但違反直覺的實驗,已讓大家有印象(2) 把大事(重大影響力但耗資源)跟小事(容易但效益有限)的實驗混合起來,避免人家覺得你沒貢獻或者只會做小事情"
#Cerberus Interactive/Acorns (微型投資與機器人投資) , Sami Khan
"靠創意的廣告狂人時代已經過去,excel 跟計算機才是你的好朋友。"
# Camera360(修圖), 陳思多
“增長的成功要素是CEO的有意識支持。因為增長會用到很多資源,或是影響很多資源。若是沒有CEO的支持,無法成功。”
#Square(支付), 羅揚 James Luo
“通路關鍵三大指標(CPA, ROI, LTV)中,最難建模的是LTV。因為涉及對長期留存率與資本折現率的重要假設。”
# 探探(校園招聘)/ 美圖(修圖), 韓知白
“快速迭代的價值在於,當你沒有人家的靈感,人家一次增長效果比你好3倍(+60% vs +20%)的時候,只要你迭代速度有三倍,還是可以得到一樣的成功增長效果。”
# Keep(運動)/豆瓣(社群), 張弦
“做產品像開船,動力與方向最重要。產品小的時候,著重動力,加速度要夠。產品體量大了後,動力已經比較足了,著重方向,往哪兒發展就更重要。”
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「指標 程式 題目」的推薦目錄:
- 關於指標 程式 題目 在 許幼如的職場學習路 Facebook 的最讚貼文
- 關於指標 程式 題目 在 Facebook 的最佳貼文
- 關於指標 程式 題目 在 Y道理 Facebook 的最佳貼文
- 關於指標 程式 題目 在 コバにゃんチャンネル Youtube 的最佳貼文
- 關於指標 程式 題目 在 大象中醫 Youtube 的最佳貼文
- 關於指標 程式 題目 在 大象中醫 Youtube 的最佳解答
- 關於指標 程式 題目 在 Re: [問題] 指標和雙重指標考題- 看板C_and_CPP - 批踢踢實業坊 的評價
- 關於指標 程式 題目 在 [C program] 指標練習題(一) @ AAA - 隨意窩 的評價
- 關於指標 程式 題目 在 #新手C語言指標的問題 - 軟體工程師板 | Dcard 的評價
- 關於指標 程式 題目 在 程式新手學習發問區,問都給問!! - Facebook 的評價
- 關於指標 程式 題目 在 【C 語言的LeetCode 30 天挑戰】第一天(Single Number) 的評價
指標 程式 題目 在 Facebook 的最佳貼文
【電力的F1方程式】
今天立法院經濟委員會由國民黨立委輪值召委,安排議程(事由:邀請經濟部部長、財政部首長及原住民族委員會首長針對: 一、我國2021氣候變遷績效指標排名落後、推動燃煤總量管制落實減煤、再生能源實際發電量與裝置容量嚴重落差、離岸風電國內產業關聯政策推動受阻及遴選機制修正等檢討。 二、目前工業及民生用水之最新支援、調度與節制措施等執行情況及因應中、南部地區因缺水、限水問題遭受影響之產業其相關紓困方案。 三、「原住民族地區參與再生能源設置」及「推動民間團體於偏遠地區設置綠能發電設備」推動情形之檢討與精進作為。 四、國有礦業用地專案陳報行政院核准移交經濟部接管計畫。 進行報告,並備質詢。)這種作文比賽式的專案報告題目,就可以知道國民黨的用意。
利用質詢時間,再跟王美花部長確認,星期一在行政立法協調會報,經濟部提出三接外推方案,將工業港再外推455公尺,因應外推方案,工期再延2年半,預算增加新台幣150億元。如果拒建三接的公投案被否決後,政府還是會依據修正方案執行。
從這個妥協方案,可以看出台灣的電力F1方程式:
1,低電價(不能以價制量)
2,要環保(不能改變環境)
3,要綠能(不能調高電價)
4,不排碳(不給更新機組)
5,不收核廢料(不給使用執照)
全世界有比現在更好的電力方程式嗎?
--------------------------
另外,經濟部已經表示暫緩實施乾旱時期的耗水費徵收,但我誠心建議,如果是依據2015年的規劃一年只收6-16億,不如不收。
我認為,應該廢除耗水費思考,進行合理調整水費費率,水價費率全國一致,台水比照北水的費率級距,降民生、調大戶。
依目前台水價格,所說是單身便宜,貴家庭:
2019年國人平均每個月每戶用水量在25度,兩套制度水費比較:
在14度時,兩套制度的水費是相當(北水209.5元,台水水費210.3元);
但14度以下,台北市水費相對貴(北水188.5元,台水148.5元);
而34度以上的小家庭使用,台北市水費相對便宜(北水339.5元,台水395.5元) 。
指標 程式 題目 在 Y道理 Facebook 的最佳貼文
/ 創新、企業營運的必然關係 / #周末認真文系列
.
我這一年(2020) 對於創新有些很不一樣的見解。某個程度上來說,也算是「改三觀」了。
.
以前我會認為「創新對企業是一件理所當然的事。不管是產品創新、營運創新、服務創新 ... 甚麼有的沒的創新應該理所當然才是。
.
這種觀點當然很容易被質疑。但對「創新」,我覺得這比較像是一種信念,甚至很靠近「應該要為了做而做」才是。否則如果你要把創新當成一件可以創造短期績效的事情,終究辛苦,要當成長期的事情又流於浪漫。
.
但是討論「創新」是一個非常惹人厭的題目。追根究柢,你可以把所有的不一樣都定義為創新,那根本就包山包海了 .... 任何一間企業都可以說自己是創新企業;但同樣的,你也可以用比較嚴格的觀點去檢視企業,說他不創新 (同樣的句型,你也可以說這間企業「拒絕導入數位轉型。」)
.
這個當然還是有解法的。例如說企業可以追求創新指標、創新獎項,或者內部訂定創新標準等等。反正你覺得你需要創新就要 (或者不要就不要);反正如果你的企業可以幾十年的幾百年的活下去,能夠創新或不創新,有這麼重要嗎?
.
.
短一點的來說。例如說 Boston Dynamics 的這隻機器狗、例如說量子電腦、例如說DeepMind (寫圍棋程式的那間) ... 或者我可能還可以舉幾個例子。
.
在這些題目中,上述談到的幾間公司做出了差不多公認的「創新」產品與技術。但這些題目若沒有搖錢樹撐著,商業上是很難活下去的 ... 但由於這些題目都是人類技術的最前端,到底我們需不需要這些技術公司以商業為目標的經營下去?
.
所以當我看到 #BostonDynamics 用十億美元不到的價格轉手給 Hyundai ... #BD 在技術上肯定是沒有失敗的,能夠做出這麼厲害的機器人。或許在歷史上、技術上是有意義的,但我們能說 BD 這間公司成功了嗎?
.
我覺得我越發的能夠了解 ... 有很多公司主管討厭把創新當成一件事來討論了。還是為了今天的飯碗努力比較重要,對嗎?
.
對嗎?
指標 程式 題目 在 コバにゃんチャンネル Youtube 的最佳貼文
指標 程式 題目 在 大象中醫 Youtube 的最佳貼文
指標 程式 題目 在 大象中醫 Youtube 的最佳解答
指標 程式 題目 在 [C program] 指標練習題(一) @ AAA - 隨意窩 的必吃
判斷下列程式碼輸出結果No1. int main() { int a=17; int *c; *c=a; printf("c=%d ",*c); printf("a=%d ",a); *c = *c +3; printf("c=%d ",*c); printf("a=%d ",a); ... ... <看更多>
指標 程式 題目 在 #新手C語言指標的問題 - 軟體工程師板 | Dcard 的必吃
各位大神好,最近練習書上的範例有點不懂,程式碼如下。題目是要將陣列的小寫全部改成大寫,不懂的地方是converToUppercase這個function; ... ... <看更多>
指標 程式 題目 在 Re: [問題] 指標和雙重指標考題- 看板C_and_CPP - 批踢踢實業坊 的必吃
以下是昨天晚上作夢夢到的,夢到某位學生對這題有興趣,
< 小弟講指標的講義有講到類似的東西 >
所以大致講一下這是什麼情形。
這題寫法我不知到底合不合標準(是有幾個不完成合標準沒錯,只是一般人這麼用),
所以有幾個 基本假設 先講清楚。
(1) CHAR_BITS = 8
(2) sizeof(char) = 1 < 這不是基本假設了, 是規定 >
(3) sizeof(int) = 4
(4) machine memory platfrom is "little endia"
(5) Project using Release Mode, not Debug Mode.<depends on compiler>
(6) 二補數系統
若這是練習題的話,上面五個假設應是基本要有的。
最後如果你「運氣不好」跑得出結果,請別認為是好事,
該想一下有沒有辦法讓編譯器處理這種壞習慣,
這題目只存在於面試考觀念而已。
: 我最近寫題目 寫到一題
: 不知道答案是什麼 自己用 VC跑 竟然跑不出來
你原本的程式碼有一處是筆誤的,在 VC 下不是「跑不出來」,
而是「無法編譯」、「編譯錯誤」,下次直接把錯誤敘述清楚。
※ 引述《SNSDpk5566 (5566 超強)》之銘言:
: char d[3] = {100,200,300};
: int *p = &d;
: int **pn = &p;
假設前三行記憶體內容如下,記憶體編碼應用 8 碼較合適,唯說明以四碼。
┌────┬────┬────┬────┬──┬───┬───┐
Addr│0x1200 │0x1201 │0x1202 │0x1203 │... │0x1300│0x1304│
├────┼────┼────┼────┼──┼───┼───┤
Var │ d[0] │ d[1] │ d[2] │ ???? │... │*p │**pn │
├────┼────┼────┼────┼──┼───┼───┤
內容│ 100 │ 200 │ 300 │ ???? │... │0x1200│0x1300│
└────┴────┴────┴────┴──┴───┴───┘
hex 0x64 0xc8 0x2c 0xbf
< 這個 byte 數值是假設的 >
上面張圖可以講很久了,
(1) d[2] = 300, 一個 signed-byte 最多只能存 -128~+127,這已經溢位了,
實際上存多少?不知道,但一種「可能」的數值是 (300-256 = 44),
但無論如何,它不會把溢位多出的部份存到 0x1203。
(2) d[1] = 200, 這也溢位了, 範圍不在 -128~+127,實際上「可能」的數值是
(200-256 = -56)。
(3) 不論 d[1], d[2] 問題,我們都以 16 進位示之,原因是存在 memory 都是二進位,
無關正負號。
(4) 當寫下 *p = &d , 或 *p=(int*)d 的時候,由於 *p 本身是「整數」指標,所以
p 指向記憶體範圍是從 0x1200~0x1203,也就是說,它會用到第 4 個 unknow byte,
上面假設,在記憶體裡面是 0xbf,那問題來了,
printf("%08x\n", *p);
答案是多少?
它不是 0x 64 c8 2c bf, 由於是 little-endian 的關係,所以 *p 會被解讀成
0x bf 2c c8 64
: *p-=1;
所以 *p-=1, 會變成 0xbf 2c c8 63,以這例子而言,
實際上就是將 d[0] 扣 1 ,記憶體如下
┌────┬────┬────┬────┬──┬───┬───┐
Addr│0x1200 │0x1201 │0x1202 │0x1203 │... │0x1300│0x1304│
├────┼────┼────┼────┼──┼───┼───┤
Var │ d[0] │ d[1] │ d[2] │ ???? │... │*p │**pn │
├────┼────┼────┼────┼──┼───┼───┤
內容│ 99 │ 200 │ 300 │ ???? │... │0x1200│0x1300│
└────┴────┴────┴────┴──┴───┴───┘
hex 0x63 0xc8 0x2c 0xbf
上述可知,其實完全動不到未知的第 4 個 byte, (Address 0x1203),
所以印出 printf("%d", *p); 的時候會是未知的, 關鍵在於 0x1203 多少不確定,
但前 3 bytes 變化是可以「粗略估計」的,就像上面流程所述。
故這時候如果要問我 *p 是多少,我的回答是 0x??2cc863
至於到目前為止,compiler 真的可以那麼順利讓它轉過去嗎?
oh, 不一定。已知一些 compiler 在 debug 時會用 hex speaker,
去檢查使用者寫的程式碼有沒有用到非法空間,如果有做這層檢查的話,
上述在做 int *p = (int*)&d ; 轉型的時候就會失敗了。
然而開啟 release mode (-o2) 時,這個不會再自己去檢查是不是寫到非法空間,
所以 "有機會" 可以轉型成功,反正最後 "以這個例子" ,並不會影響到第 4 個 byte,
會影響到第4個 byte 的情況有兩種:
<a> 電腦為 little-endian (一般假設),且 d[0]~d[2] 全都是 0,
所以減法造成了減法上的借位,這時才動用了 0x1203 之內容。
<b> 電腦為 big-endian 時就一定會動到 0x1203 這個 value。至於 Mixed-Endian、
Middle-Endian 小弟沒研究,就不多贅述了。
: p = &d[1];
這行改變了 p 的內容值,記憶體內容變如下。
┌────┬────┬────┬────┬──┬───┬───┐
Addr│0x1200 │0x1201 │0x1202 │0x1203 │... │0x1300│0x1304│
├────┼────┼────┼────┼──┼───┼───┤
Var │ d[0] │ d[1] │ d[2] │ ???? │... │*p │**pn │
├────┼────┼────┼────┼──┼───┼───┤
內容│ 99 │ 200 │ 300 │ ???? │... │0x1201│0x1300│
└────┴────┴────┴────┴──┴───┴───┘
hex 0x63 0xc8 0x2c 0xbf 0xcc
: **p+=1; **pn+=1;
這行我認為是筆誤寫錯,應該是要寫 **pn+=1 才對,
不然會造成編譯錯誤。分解步驟:
pn --> 取到 pn 的內容,0x1300。
*pn --> 取到 (0x1300) 的內容,0x1201。
**pn --> 取到 (0x1201) 的內容,。
至此,**pn 得到是一個 int, 所以從 0x1201 往後提出 4 bytes 出來,
也就是 0x1201~0x1204 的值,以 little-endian 去解讀,
無奈 0x1204 我們也不知道,只好暫時先假設成 0xcc 了,
little-endian 解讀出來後就變成 0xccbf2cc8 ,最後一步..
**pn+=1 --> 將 (0x1201) 的內容 0xccbf2cc8 取出來,做+1動作得 0xccbf2cc9,
再以 little-endian 方式放回到 (0x1201) 裡面去。
┌────┬────┬────┬────┬──┬───┬───┐
Addr│0x1200 │0x1201 │0x1202 │0x1203 │... │0x1300│0x1304│
├────┼────┼────┼────┼──┼───┼───┤
Var │ d[0] │ d[1] │ d[2] │ ???? │... │*p │**pn │
├────┼────┼────┼────┼──┼───┼───┤
內容│ 99 │ 201 │ 300 │ ???? │... │0x1201│0x1300│
└────┴────┴────┴────┴──┴───┴───┘
hex 0x63 0xc9 0x2c 0xbf 0xcc
一樣,這個時候如果問我 *p , **pn 是多少的話,
我的回答是 0x????2cc9,變前 2 bytes 不確定。
: p--;
: 求 *p , **p, d[0] d[1]
最後的解讀就看 printf 輸出格式怎麼處理,就算知道記憶體長怎樣,
輸出格式亂搞還是會得到不同結果,故認為題目就只有寫
求 *p , **p, d[0] d[1]
個人認為是不夠的,printf 格式寫出來才有繼續討論的必要。
----------------------------
以上敘述若有誤、或不盡理想的部份,歡迎指正,感謝收聽。
--
「自從我學了 C# , 人都變聰明 , 考試都考一百分」
「自從我學了 VB , 皮膚都變好 , 人也變漂亮了 」
「自從我學了 Java , 明顯變壯 , 個子也變高了 」
「自從我學了 C++ , 內分泌失調 , 頭都禿了... 」
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.76.161
※ 編輯: EdisonX 來自: 180.177.76.161 (09/14 22:43)
... <看更多>