質問編集履歴
1
一応結果が上手くいく補足コードを追加しました
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
|
|