12/08/07 01:31:24.25
NG推奨
◆QZaw55cn4c
3:デフォルトの名無しさん
12/08/07 02:30:01.00
\0 や NULL は 0 と書いて無問題
4:デフォルトの名無しさん
12/08/07 02:35:25.28
それで?
5:デフォルトの名無しさん
12/08/07 03:07:33.56
>>3
ソースコードは、改行などせず余分な空白など入れず、ひたすら全部一行に書いて無問題
6:デフォルトの名無しさん
12/08/07 03:13:22.54
>>5
知らないのか?
C++ ではむしろ 0 と書くのが普通
また
char *p;
for (p = s; *p; p++)
や
while(*s++=*t++)
も同じ理屈だ
NULL や \0 は書くと余計にわかりにくく思考が乱れバグの元だ
7:デフォルトの名無しさん
12/08/07 03:16:05.01
かなり古い文献のプログラムなのですが、
①
funcA(data)
short *data;
{
char max;
max = *data;
②
funcB(number)
char *number;
{
short no;
*number = no;
③
short data;
unsigned short cnt;
cnt = (long)data;
sprintf(data, "%5ld",(long)cnt);
このような表現がありました。
①②はchar型にshort型を代入(?)してるみたいだし、③はわざわざlong型にキャストしてshort型に代入してる?
試しにVisual C++6でビルドしてみたところ、エラーにはならないが、ワーニング(データが失われる・・・)となりました。これは、
1.この文献の記述がそもそも間違っている
2.意図的に大きい型を小さい型に代入しようとしている(warningは気にしていない?)
3.昔のC言語の仕様と今の仕様が違う(昔はエラーにならなかった?)
4.VCでコンパイルしたのがダメ
どれなのでしょうか?
8:デフォルトの名無しさん
12/08/07 03:18:29.82
>>6
頭悪いな
9:デフォルトの名無しさん
12/08/07 03:21:35.37
>>6
最近C++の本を読んで感動した初心者さん?
10:デフォルトの名無しさん
12/08/07 03:27:00.67
>>7
1. その可能性は否定できない。
2. そもそも方を短縮することに警告が出るのは最近の話。
3. 今もエラーにはならない。
4. 意味不明。
意図したコードが判らんから判らんが、なんとなく、16ビット時代のコードの気がする。
つーか、intをshortと書く癖でもあるのか。
いずれにしても、(3)の(long)はよく判らん。