質問編集履歴

1

一応結果が上手くいく補足コードを追加しました

2017/05/15 14:06

投稿

shell
shell

スコア13

test CHANGED
File without changes
test CHANGED
@@ -50,11 +50,47 @@
50
50
 
51
51
 
52
52
 
53
+ - 補足
54
+
55
+ 一度変数に代入するという回避策を頂きました。
56
+
57
+ 例えば以下のような感じです。
58
+
59
+
60
+
61
+ ```cpp
62
+
63
+ CString str(_T("hoge"));
64
+
65
+ CString str2(_T("dog"));
66
+
67
+ CString str3(_T("be"));
68
+
69
+ int size1 = str.GetLength();
70
+
71
+ int size2 = str2.GetLength();
72
+
73
+ int size3 = str3.GetLength();
74
+
75
+
76
+
77
+ int max_length = GetMax(size1, size2, size3); //4が入る
78
+
79
+ ```
80
+
81
+ これだと確かにコンパイルは通り、実行結果も上手く行きます。
82
+
83
+ しかし、**何故直接では駄目で一度変数に逃がす必要がある**のかわからないので、依然として納得できません。
84
+
85
+
86
+
53
87
  ### 疑問
54
88
 
55
89
  - まず何故このような結果になってしまうのか。
56
90
 
57
91
  - Debugモード / Releaseモードで挙動が違う?検討が付きません。
92
+
93
+ - 補足コードのようにすると実行結果は上手くいくが、何故直接`GetLength()`からでは駄目なのか
58
94
 
59
95
 
60
96