はじめまして、お世話に様になります。C言語BorlandC++コンパイラを使用しています。
C言の学習は6ヶ月位です。下記内容の例題をコンパイルしますと、
警告 W8068 sinko.c 11: 比較において定数が範囲外(関数 main)
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland と表示されます。exe ファイル作成を行っても c:\mysrc> が帰ってくるだけです。警告文中 11; 比較において定数が範囲外 (関数 main)の意味が理解できません。”定数が範囲外”の意味と本文の訂正の仕方が分かりましたら教えてください。
参照例題:
#include <stdio.h>
void main()
{
char *namae[/url]={"コバヤシヨシヒコ", "オクヤマケイゾウ", "モリヤマカンジ", "オオエタカシ",};
int kaisuu;
for (kaisuu=0; kaisuu<4; kaisuu++)
if (namae[kaisu[/url] [0] =='オ')
printf("イニシャル「オ」=%s\", namae[kaisu[/url]);
}
本では実行結果は イニシャル「オ」= オクヤマケイゾウ
イニシャル「オ」= オオエタカシ と書いてあります。
イニシャルによって選び出す(例題)
Re:イニシャルによって選び出す(例題)
printf("イニシャル「オ」=%s\", namae[kaisu[/url]);
において、第一引数に与えられている文字列定数が閉じられていません。
"イニシャル「オ」=%s\"" とするか、"イニシャル「オ」=%s" としてください。
において、第一引数に与えられている文字列定数が閉じられていません。
"イニシャル「オ」=%s\"" とするか、"イニシャル「オ」=%s" としてください。
Re:イニシャルによって選び出す(例題)
警告の意味は
if (namae[kaisu[/url] [0] =='オ')
において char 型の変数 namae[ ][ ]との比較に char型で表現できる範囲を超えた定数値 'オ' (0x4983)を使用しているという意味です
シフトジス限定ということなら
if (namae[kaisu[/url][0] == (char)0x83 && namae[kaisu[/url][1] == 0x49)
でしょうか
if (namae[kaisu[/url] [0] =='オ')
において char 型の変数 namae[ ][ ]との比較に char型で表現できる範囲を超えた定数値 'オ' (0x4983)を使用しているという意味です
シフトジス限定ということなら
if (namae[kaisu[/url][0] == (char)0x83 && namae[kaisu[/url][1] == 0x49)
でしょうか
Re:イニシャルによって選び出す(例題)
>本では実行結果は イニシャル「オ」= オクヤマケイゾウ
> イニシャル「オ」= オオエタカシ と書いてあります。
本では半角カナを使っているのかもしれません(Shift JIS限定は変わりないですが)
> イニシャル「オ」= オオエタカシ と書いてあります。
本では半角カナを使っているのかもしれません(Shift JIS限定は変わりないですが)
#include <stdio.h> void main() { char *namae[/url]={"コバヤシヨシヒコ", "オクヤマケイゾウ", "モリヤマカンジ", "オオエタカシ",}; int kaisuu; for (kaisuu=0; kaisuu<4; kaisuu++) if (namae[kaisu[/url][0] == 'オ') printf("イニシャル「オ」=%s\n", namae[kaisu[/url]); }