• ベストアンサー

自動変換について質問

僕はプログラミング初心者ですので、それを念頭に置いた上でわかりやすく且つ本質的なご教示希望します。よろしくお願いします^^ 参考書に「byte、shortはビット幅がcharより狭いのでcharからこれらの型には自動変換できない」と書いてありました。byteはcharよりビット幅が狭いから納得できるのですが、shortとcharのビット幅は同じ16です。なんで自動変換できないんですか?ビット幅が同じなのに、、

  • Java
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

符号は?

wantanton
質問者

お礼

符号はってどういうことですか?質問の意図がわからない いや、、まてよ、、、もしかして、charは正の数しか表せないから、自動変換できないってことですか?改めて質問します。

関連するQ&A

  • 自動変換について質問

    javaの解説書に、「shortはビット幅がcharより狭いので、charからshortに変換できない」と書いてありました。 これは、正のbit幅が、charが16でshortが8だから、charよりshortのほうがbit幅が狭いから自動変換できないということですか?

    • ベストアンサー
    • Java
  • C#で型変換がうまくいきません。

    C#で型変換がうまくいきません。 short r; byte[] b = new byte[] {1,2,3}; r = (short)b[1] * (short)256; というコードを書くと、 型 'int' を 'short' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください) と出てしまいます。キャストしているのに何がいけないのか全くわかりません。 どうぞ宜しくお願いいたします。

  • 暗黙的型変換

    C の文法書を読んでいると、 汎整数型拡張: int より小さな汎整数型が式中に現れる場合は、暗黙的に int 型に変換される。 算術変換: 二項演算子で二つのオペランドの型が違う場合は、演算前により大きな方の型に暗黙的に変換される。 とあります。 例えば int 型 = unsigned short 型 - unsigned char 型; はどのように暗黙的な型変換が行われるのでしょう。 int 型 = (int)unsigned short 型 - (int)unsigned char 型; でしょうか。あるいは、 int 型 = (int) ( unsigned short 型 - (unsigned short)unsigned char 型); でしょうか。

  • C++型変換

    型変換が難しいです。 デバッグやフォームへ文字を表示するのに型変換で躓いています。 charからstringとやBYTEからstringなど相互変換の需要はあまりないのでしょうか? char2stirngとか一式どこかにないですか? そもそもMicrosoftがこう言った型変換を簡単にするのを提供しないのはなぜでしょう? VBはあまり意識せずできていたので、VBからするとメッセージボックスに文字や数字を出すだけでも一苦労です。

  • C言語の型変換について

    short int 型をunsigned char型に変換する方法をおしえてください

  • 変数の容量ついて質問

    変数にも容量ってありますよね? 例えば、char型で宣言された変数は16ビットの容量があって、byte型で宣言された変数は8ビットの容量があるということですか? このように、宣言されるデータ型によって、変数の容量は違いますか? ちなみに、私はプログラミングまったくの初心者なので、噛み砕いた解説いただければありがたいです。

    • ベストアンサー
    • Java
  • 警告 : 問題のあるポインタの変換

    #include <iostream.h> char *f(){   char buf[1] = "\0"; // char *buf = "\0";  return static_cast<char*>(buf); } main(){  cout << f(); これで、関数の型が char * なのに、char [] 型変数を 返そうとするソースだからコンパイルで警告が出るんだと思いました。 関数の型が char [] なのに、char * 型変数を返したなら 返された値を変更できないから不都合が起こるのが 分かりますが、上に書いたソースの場合は不都合なことに なりますか? 問題のあるポインタの変換ということを言われるのが納得 できないので、納得させてください。

  • char型・int型を相互変換させるプログラミング

    今、C++で2つのPC間で数値データの送受信を出来るようにしようと思い、実際にデータを飛ばせるところまで来たのですが、送れるデータの型はchar型のみであるとのこと。 ですので、intの値を一旦charにして送り、送った先でまたintにしたらいいかなと考えてプログラミングしました。 簡単にできると思ったのですが、上手くいきません・・・。プログラムのどの部分が間違っているのでしょうか? 一人では、これ以上悩んでも好転しないので、皆さんのご指導をお願いします 以下プログラム抜粋、このプログラムでは型変換がおこなわれているかの確認ができればいいので、それのみでプログラミングしています =================================================== #include <stdio.h> #include <stdlib.h> #include <string> #include <iostream> int main() { int a=123; char *b=new char; int c=1; //変換部分 *b=(char)a; std::cout<<"int→char>>>"<< c << "\n"; //逆変換部分 d=atoi(c); std::cout<<"char→int>>>"<< d << "\n"; } ======================================================

  • 文字を整数として扱う場合の演算について質問

    javaの参考書に、文字を整数として扱う場合の演算についての解説があり、疑問点があったので質問します。 質問1:何故char型の変数は、キャストしなくてもint型のリテラルを代入することができるのか?      例えば、 以下の演算はキャストしなくてもこのまま代入できます。 char ch='a'; ch=98; でも、以下の演算はキャストしていないのでエラーになります。      char ch='a'; ch=ch+1; これは何故ですか?参考書に記載されていた理由として、「byte,char,short、 これ等の型の変数や値を使って計算すると、それ等は一度intに直して計算されるから」というような趣旨の事が書いてありました。 つまり、char型の変数には、キャストしない限りint型の数値を代入できないということですよね? でも前者のソースコードは、chはchar型であるにもかかわらず、int型のリテラル98を代入できています。 これは何故ですか? 質問2:javaの参考書に、インクリメント・デクリメント演算子と複合代入演算子は、型を保存するという解説がありました。これはどういう意味ですか? 僕の仮説では、例えば、      char ch='a';      ch+=5; であれば、5は、char型のまま代入されるということでしょうか?

    • ベストアンサー
    • Java
  • System::Stringからconst charへの変換

    aという変数がSystem::String型であります。 そこで次に行いたい処理のために、const char*に変換したいのですが、下記のページを参考にプログラムしてみたのですがうまくいきませんでした。 うまくいかなかったというのはまだSystem::String型のままで変換できていなかったとエラーで出てしまいます。 そのような場合は、どのように型変換すればよいのでしょうか?

専門家に質問してみよう