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

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

ただいまの
回答率

88.82%

U8からどうやって境界値、同値の数字を調べるのか

解決済

回答 5

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 758

hasune

score 17

お世話になります。
単体試験において境界値と同値をテストする際、
コードにuint8とあったらここからどうやってテストする数字が分かるのでしょうか?

uint8がunsignedの略であることは調べて分かっており、
unsignedはプラスの数字であるためマイナスはないことまでは分かっています。
分からないのがuint8の8の部分で、
uint8もそうですがこれがuint2やuint4だった場合境界値と同値の数字がどうなるのか分かりません。

どのような考え方をすれば境界値と同値の数字が分かるのでしょうか?
皆様のお知恵をお貸しください。どうぞよろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • HogeAnimalLover

    2019/05/13 00:27

    多分、会社内の用語とか会社内のルールが関与しています。ここで質問されても回答できません。

    キャンセル

  • hasune

    2019/05/13 21:16

    すみません、U8ではなくuint8の書き方でした。
    U8とuint8は同じと聞いてるので意味はないかもしれませんが・・・。
    U8を調べた時にサフィックスというのを知ったのですが、
    社内ルールの可能性もありますね。すみません・・・。


    http://d.hatena.ne.jp/Crest/20101108/1289228948
    http://www.c-lang.org/constant.html

    キャンセル

回答 5

checkベストアンサー

0

多分、U8 ってunsigned int8 の略だと思います
いわゆる、unsigned char ですね

8ってのは8bitの意味で、2^8なので、0~255までの範囲になります。
基本的に8が最低単位なので、16や32はあっても、2とか4とかはないと思います

#charは8bitとは限らないけど、その話は置いておいて…

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/13 20:55

    すみません、U8ではなくuint8の書き方でした。
    U8とuint8は同じと聞いてるので意味はないかもしれませんが・・・。

    でも、Uはunsignedではなく、
    厳密にはunsigned charなのですね!道理で検索してもヒットしないはずです。
    U2とU4は適当に言いました。
    前見たコードに(U1)があったのでU2やU4があるのかと思ったので質問させていただきました。
    申し訳ありません。

    キャンセル

0

U8という用語はC言語の仕様にはありません
どういう定義をしてるんでしょうか

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/14 20:31

    調べました。以下の意味ということですね!
    uint8とuint8_tはどうも同じっぽいですね・・・。
    uint8の有効範囲が0 ~ 255でここから境界値と同値の数字を考えればいい、
    で考え方は合っていますかね?

    uint8_t→1 バイトの符号なし整数(有効範囲:0 ~ 255)
    uint16_t→2 バイトの符号なし整数(有効範囲:0 ~ 65,535)
    uint32_t→4 バイトの符号なし整数(有効範囲:0 ~ 4,294,967,295)
    uint64_t→8 バイトの符号なし整数(有効範囲:0 ~ 18,446,744,073,709,551,615)

    キャンセル

  • 2019/05/14 20:33

    まあ、そういうことじゃないかと。

    #そもそも境界値ってなに? <ってそこからかよw

    キャンセル

  • キャンセル

0

U8 って何だろうっと検索したら、

s8 u8 s16 u16 s32 u32 s64 u64 の型とは?
と言う理解で良いでしょうか?

とすれば、unsigned char の事なので、 8bit の符号無しとなります。
u2, u4 の定義は無いと思いますが、違いますか?
あるとすれば、 u8, u16, ...でしょうか。

U8の意味が違ってたら、すみません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/13 20:59

    すみません、U8ではなくuint8の書き方でした。
    U8とuint8は同じと聞いてるので意味はないかもしれませんが・・・。

    知識不足でこれです!とは言えないのですが、
    近いように思えます!
    u2, u4 の定義は私が適当に言いました。
    前見たコードに(U1)があったのでU1、U2、U3、U4と続くのかと思っていました・・・。
    どうやら違うようですね。勉強になります><

    キャンセル

0

U8もそうですがこれがU2やU4だった場合

U8だけ目にしたら、「符号無し整数8bit」の意味だと思うのが普通ですが、U4やU2と一緒に出てくるとすると、「符号無し整数4bit」や「符号無し整数2bit」という変数は普通無いので、Uが大文字であることからしても、「符号無し整数8バイト」「符号無し整数4バイト」「符号無し整数2バイト」ではないかと思います。
普通はそれぞれ u64 u32 u16 と書くと思うので、U8 U4 U2 は、社内ローカル用語じゃないでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/12 22:05

    本題の回答を書くのを忘れてました。最小値は0で、最大値は「2のビット数乗-1」です。

    キャンセル

  • 2019/05/13 21:07

    すみません、U8ではなくuint8の書き方でした。
    U8とuint8は同じと聞いてるので意味はないかもしれませんが・・・。

    U8=符号無し整数8bitが濃厚のかもしれません。
    普通はu64 u32 u16 と書くのですか!
    U8を調べた時にサフィックスというのを知ったのでこの書き方なのかと思ったのですが、
    これもあまり一般的ではない書き方なのでしょうか?

    http://d.hatena.ne.jp/Crest/20101108/1289228948

    http://www.c-lang.org/constant.html
    U4やU2は私が前見たコードに(U1)があったのでU1、U2、U3、U4と続くのかと思い、
    この場合境界値と同値の数字はどのように求めればいいのかと思って質問させていただきました。

    キャンセル

  • 2019/05/13 21:31

    英大文字と英小文字は意味が違うことがしばしばです。
    例えば、バイトをBで、ビットをbで表すことが多いです。単位としてのビットを英大文字で書くことは無いです(小文字を使えない場合を除く)。

    > 普通はu64 u32 u16 と書くのですか!
    いいえ。普通は、uint8 や uint64 と書きます。また、uint2 とか uint4 とかは無いです。

    結局、どこでどういう記述を見たのでしょうか?自分の主観を排して客観的に書いてください。

    キャンセル

  • 2019/05/14 20:38

    失礼いたしました!
    コードはこのようになっています。

    △△(〇△〇) ▼□▼(□□□ uint8)
    {
    #if(☆☆)
    ☆〇☆=□〇□;
    #else
    ☆〇☆=(U1)0;;
    #endif

    switch(式){
    case cat:
    tama[□■]=●●(☆★);
    break;

    ・ この先caseが続きます


    >普通は、uint8 や uint64 と書きます。
    一般的な書き方はuint8 や uint64なのですか!勉強になります。

    キャンセル

0

名前だけでは、わかりません。

typedefもしくは#defineしている箇所を探し出してどういう型なのかを確定させる必要があります。

見つからない場合の裏技として

sizeof(U8)でバイト数が分かるので256sizeof(U8)乗を計算して-1したものが符号なしの場合の最大値の可能性が高いです。


c++を使える場合std::numeric_limitsを用いることで

#include <iostream>
#include <limits>

using std::cout, std::endl;
typedef unsigned int U1;
typedef long long U2;

int main(){
    cout << std::numeric_limits<U1>::max() << endl;
    cout << std::numeric_limits<U1>::min() << endl;
    cout << std::numeric_limits<U2>::max() << endl;
    cout << std::numeric_limits<U2>::min() << endl;
}

のように取得する事が可能です

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/14 21:19

    申し訳ありません。全然違いましたね・・・。

    下記のサイトの「記号定数の定義」の項の意味で良かったでしょうか?
    >ソース上に、意味のある定数を10や25など直接の数値、いわゆるマジック・ナンバーとして書いてしまうのはよいことではありません。後でプログラムを読む人がこの数値の意味を理解できませんし、数値が変更になった場合、ソースのいたるところを修正しなければなりません。
    これを避けるために、defineをよく使用します。例えば、下記のように上限値と下限値を記号定数として定義し、使用すれば、ソースを読む時にその意味がわかりますし、上限値、下限値が変更になった場合、defineしたところだけ変えれば、変更が全てのソースに反映されます。


    http://www.c-lang.org/define.html

    キャンセル

  • 2019/05/14 23:37

    それですね。

    キャンセル

  • 2019/05/15 21:05

    こちらで合っていましたか!良かったです。
    asmさんのお陰で考え方が分かりました。ありがとうございます!

    キャンセル

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

  • ただいまの回答率 88.82%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る