3_演算子と文字列


演算子には
普通の演算子+,-,*,/がある。説明の必要ないでしょう。
%はあまりを求める。たとえば7÷5のあまりが2なので、7%5==2。
インクリ、デクリメント(++,--)もいいでしょう。このへんは説明不要でしょう。

=と==の違い

C#の演算子には、=という演算子と==という演算子があります。

=は変数に数値(とか文字列とか)を入れる演算子です。
==は等しいという演算子。

たとえば

int x;
x=3;
xに3を入れろという命令です。
x==3;
これは、xが3と等しいという意味です。

また、
int x=3; x=x+1;
という文は、xにx+1を入れろという意味になります。ここではxが3+1つまり4になります。

まぁとりあえず今はifの()中は==を入れる
ってことだけ覚えておけばおk。初心者は必ずif(x=3)とかやっちゃってコンパイルできなくなります。

論理演算子

前回、if文をやりました。
bool型があることもやりました。

if(x<5){
//処理
}
これはxが5より小さいときに実行しますがさらにxが0より大きいときという条件にしてみます。
if(0<x<5){
//処理
}
これで大丈夫と思いきや、エラーが出ます。
まず最初に、0<xが判定され、falseと判断されます。
次にそのfalseと5の大小を比較します。もちろん、falseと5というまったく違う型を比較はできません。
ではどうすれば0<x<5の条件でifを判断できるのか。
それは論理演算子を使います。
論理演算は、!、|、&、^の4つがあります。

!は否定です。ウソとホントが逆転、falseはtrueになり、trueはfalseになります。
if(!(1+1==3)){//1+1==3はfalseなので、!がついてtrueになる。その結果これはif文が処理される。
//処理        !(1+1==2)なら処理されません。
}

if(!true){//これは処理されません
//処理
}

|は論理和、「または」ってやつです。
if(x=2 | x=3){//xが2か3のどちらかならば
//処理
}

bool T=true;F=false;
if(T | F){//trueとfalseの論理和はtrueなので処理される。
//処理
}

&は論理積「かつ」ってやつです。
int x=3;
if(0<x & x<5){//xが5より小さくて0より大きければ
//処理       いまはx=3なので条件を満たす、処理される
}

排他的論理和については、他の論理演算と違ってifの中ではあまり出てこないでしょう。
参考のために書いておきます(別にいま覚えなくても必要になったときに覚えればいいです)
true^falseはtrue false^trueはtrue
false^falseはfalse true^trueはfalseです

if((1+1==2)^(2+3==5))//これは両方ともtrueなので処理されません

if((1+1==3)^(2+3==5))//これは片方だけtrueなので処理されます

if((1+1==3)^(2+3==6))//これは両方falseなので処理されません

文字列

文字列も変数として箱に入れることができます。
 string str="あいうえお";
intが整数しか入らなかったようにstringには文字列("で囲まれた文字)しか入りません。

悪い例
string str;
str=3;//"3"ならOK

string str;
int i=100;
str=i;//string型のstrにint型の100を入れることはできない

string str1,str2;
int i=100;
str1="あああ";
str2=str1+i;
//これはコンパイルは可能、理由秘密。演算子オーバーロードだのobject型だの暗黙変換だの難しいことが絡む。
//コンパイル可能だが初心者はやらないほうが良い。
悪い例ここまで

動画のプログラム

using System;

class Test5{
    public static void Main(){
        string s="かっぱっぱ";
        Console.WriteLine(s);
        Console.WriteLine("かっぱっぱ");
    }
}

文字列以外の型の文字列への変換ToString

using System;

class Test5{
    public static void Main(){
        int i;
        i=3+4;
        Console.WriteLine("3+4= "+i);
    }
}

Console.WriteLineで"3+4="とiというふうに、「文字列」と「int型」を足している。
本当はint型をstring型に変換する.ToString()というのをiにつけなければならない。
なんでこれでちゃんとコンパイルできるのかは演算子のオーバーロードだのobject型だのが絡んでくるので秘密。
とりあえず初心者はi.ToString()ってやってくれ。

あらゆる変数は、.ToString()とつけることで文字列に変換できる。


string str;
int i=100;
str=i.ToString();//これで、strに100という文字列が入りました。

また、逆にstrをintに入れたいときはint.Parse()を使い、()の中に文字を入れる。
.ToString()と違って()の中に文字列をいれるので紛らわしいので注意。あとは最初のiが小文字とか。
int x;
string str="100";
x=int.Parse(str)

C#の言語仕様で、多少厳密さを省いて簡単さ、簡潔さを優先したためかえって初心者に誤解が生じる可能性がある。
とりあえず変数はすべて型があり、違う型は本来足したり代入したりできない。
int i=30;
string str="あいうえお";
Console.WriteLine(str+i);
みたいにint型とstring型というまったく異なる型を足し合わせるのは本当はダメ(他のプログラミング言語ではこういうのはエラーが出る)
でもc#はコンパイルできるし、誤作動もしないようになってる。
でも
int i=30;
string str2;
str2=i;
みたいのはコンパイルできないので、やっぱり違う型は足したりしないほうがいい。

文字列の表現 わからないひとや面倒な人は読み飛ばしてください。まだ覚えなくてもあまり困りません。

""で囲まれた文字列は特殊な文字があります。
Console.WriteLine("あいうえお\tかき\"くけこ\nさしすせそ");
\tはタブ(長い空白) \nは改行、\"はダブルクオーテーションです。実行して確かめてください。
10進と16進の変換はToString()を使います。
数が16進であることは数字の前に0xをつけます(たとえば0xFFなら10進では255、0x64なら10進では100)
Console.WriteLine("100を16進表示するのは100.ToString(\"x\")を使います:"+100.ToString("x"));
Console.WriteLine("16進のFFを10進表示するのは0xFF.ToString(\"d\")を使います:"+0xFF.ToString("d"));
""で囲まれたとおりに表現するのは@を使います。
Console.WriteLine(@"逐語リテラルです。改行します。
タブをいれます		ダブルクオーテーションです""    \n\t
           ああ
                いい");

実行してみて確かめてください。
他にも表現方法いろいろありますが知らなくても困りません。気になるならC# リテラル文字列 MSDNとかグーグルで。



タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2009年11月17日 23:27