イニシャルによって選び出す(例題)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
中村

イニシャルによって選び出す(例題)

#1

投稿記事 by 中村 » 15年前

はじめまして、お世話に様になります。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:イニシャルによって選び出す(例題)

#2

投稿記事 by へろりくしょん » 15年前

printf("イニシャル「オ」=%s\", namae[kaisu[/url]);
において、第一引数に与えられている文字列定数が閉じられていません。

"イニシャル「オ」=%s\"" とするか、"イニシャル「オ」=%s" としてください。

toyo

Re:イニシャルによって選び出す(例題)

#3

投稿記事 by toyo » 15年前

警告の意味は
if (namae[kaisu[/url] [0] =='オ')
において char 型の変数 namae[ ][ ]との比較に char型で表現できる範囲を超えた定数値 'オ' (0x4983)を使用しているという意味です
シフトジス限定ということなら
if (namae[kaisu[/url][0] == (char)0x83 && namae[kaisu[/url][1] == 0x49)
でしょうか

toyo

Re:イニシャルによって選び出す(例題)

#4

投稿記事 by toyo » 15年前

>本では実行結果は イニシャル「オ」= オクヤマケイゾウ
>         イニシャル「オ」= オオエタカシ と書いてあります。
本では半角カナを使っているのかもしれません(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]);

}

toyo

Re:イニシャルによって選び出す(例題)

#5

投稿記事 by toyo » 15年前

ここは自動的に半角カナが全角カタカナに変換されてしまうみたいですね
上の投稿のカタカナは半角カナで投稿したものです

閉鎖

“C言語何でも質問掲示板” へ戻る