returnについての質問です – 固定ページ 2 – プログラミング – Home

returnについての質問です
 
通知
すべてクリア

[解決済] returnについての質問です

固定ページ 2 / 2

kan
 kan
(@kan)
ゲスト
結合: 22年前
投稿: 11
Topic starter  

int n = sprintf(struG.aa, .... );
assert( n < 5 );

でnをprintf(assert.hを使用したくなかったので)でみたところ5でしたけど・・・

全く同じ処理を直前でやっているのですが、その部分では、壊れないようなのです。
奇跡的に戻っていただけでしょうか?

typedef struct stru
{

char test[5];
char aa[5];//あとで追加したメンバ
}stru;

sub2()
{
unsigned long rr;
unsigned long ss;
stru struG;

sprintf(struG.test, %05u, rr); //呼び出し元に戻ることができました。
sprintf(struG.aa, %05u, ss); //この処理を追加するともどれません。
return 0;
}


返信引用
Kazuki
 Kazuki
(@Kazuki)
ゲスト
結合: 22年前
投稿: 41
 

たまたま動いてただけです。
> でnをprintf(assert.hを使用したくなかったので)でみたところ5でしたけど・・・
5だと assert(n < 5); にばっちりひっかかりませんか?
printf文入れて確認するくらいならassert使うのと大差ないような気も…
(いらなくなったなら消せばいいし)


返信引用
kan
 kan
(@kan)
ゲスト
結合: 22年前
投稿: 11
Topic starter  

たまたま動いてただけです。
> でnをprintf(assert.hを使用したくなかったので)でみたところ5でしたけど・・・
5だと assert(n < 5); にばっちりひっかかりませんか?
printf文入れて確認するくらいならassert使うのと大差ないような気も…
(いらなくなったなら消せばいいし)

あ、引っかかりますね。
皆様、ご教授いただきありがとうございました。解決です
あわせてこれからコードを載せる際には気をつけたいと思います。。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

> sprintf(struG.test, %05u, rr); //呼び出し元に戻ることができました。

そりゃそうでしょう。
そのうしろに char aa[5]; があるので、そっちを書きつぶしたに違いありません。
が、確保された領域を超えてはいませんから。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました