質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

4回答

10163閲覧

C言語で四則演算を

Mk38

総合スコア7

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/05/17 18:24

###前提・実現したいこと
C言語四則演算を作ろうと思っているのですがエラーがでて先へ進めません
if (bun == "a");この部分の「==」の所でエラー:オペランド型に互換性がありません("char"と"const char*")と出てしまいます
###発生している問題・エラーメッセージ

エラー:オペランド型に互換性がありません("char"と"const char*")

###該当のソースコード
#pragma warning(disable:4996)
#include <stdio.h>
#include <conio.h>
#define _CRT_SECURE_NO_WARNINGS

int main(void)
{
int b;
double inp1, inp2, c, kotae;
char bun;

printf("---SoftVersion:0.12---\n"); printf("##\n本ソフトは未完成品のα版のため\n不具合が発生する場合がありますので"); printf("あらかじめご了承ください\n"); printf("始めるにはa,終了する場合はbを入力してください"); if (bun == "a");

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
C言語 Microsft Visual Studio

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ぶっちゃけ、""はstring(文字列)、''はキャラクタ(バイト)って考えてくださいね。
Cでは文字列を比較する際には、strcmpってものを使用します。
って事で後は自分で悩みましょう♪

投稿2016/05/18 00:27

JunTakeshita

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

変数bunはchar型(文字)なので、比較するときは右辺も同じ型である必要があります。
C言語で"xxxx"は文字列であり、右辺に"a"と書くとその文字列が格納されている先頭アドレスとなります。

C

1if (bun == 'a')

と書くのが正しいです。
まずはC言語における文字列と文字の扱いを学習したほうがよいと思います。

また余談ですが、bunを初期化(入力)していないようですが、それはこれからということですかね。

投稿2016/05/18 00:36

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2016/05/18 02:09 編集

> 比較するときは右辺も同じ型である必要があります。 正しくは「暗黙裡に他方に変換できる型」 だから if ( bun == 97 ) でも合法(それが善いことかはさておき)。 なのでたとえば '1'と比較するのをうっかり if ( bun == 1 ) とやっちゃうと コンパイルエラーとならず、実行時に挙動不審で悩むハメになります。 このケースでは bun(char) と "a"(const char*) では暗黙変換できんのでエラーとなってます。
ttyp03

2016/05/18 02:31

あ~、まあ厳密な話をするとそうなんですけど、文字列も文字もわかっていなそうな初心者にそういう話をするよりも、まずは基本的な話として回答しました。
episteme

2016/05/18 02:35 編集

はい、「四の五の言わんと型を合わせろ」には全面的に同意します。
guest

0

"a" では文字列という意味になると思います。'a'で1文字という判断だと思います。

さらに文字として定義するなら、unsigned char型が良いと思います。

投稿2016/05/17 22:39

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2016/05/17 23:49

なぜに unsigned char?
退会済みユーザー

退会済みユーザー

2016/05/18 02:52

文字の場合、7ビットではなく8ビットにするクセがあります。 今は文字の場合、UNICODE型・・・・たぶん2バイトだと思います。 この場合はキーボード入力なので a=a and 0x7F とするか、==’a’ or =='A' とするでしょう。私ならですが。 答えは「くせ」です。
guest

0

"a"はポインタの型です。
char型にするには'a'としてください。

投稿2016/05/17 19:48

Aoich

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問