1

私はcプログラミングが初めてです。ネットワーク セキュリティのユニ コースの一環として、SSL ハンドシェイク シミュレーションを設計する必要があります。オンラインでサンプル コードを見つけましたが、コードの一部がわかりません。次のことで私を助けてください:

何をし(char) 0ますか?? ( send_data は次のように定義されますchar send_data[1024];)

send_data[0] = (char) 0;                //Packet Type = hello
send_data[1] = (char) 3;                //Version

編集 + フォローアップ

皆さん、型キャストとは何かを知っています。

キャストとは何かを理解していますが、投稿したコードは何もしていません。整数 0 は文字としてキャストされていますが、それを印刷すると空白になるため、何もしません。値はありません。

例:

#include <stdio.h>
#include <stdlib.h>

int main(){

char test;
int num;

num = 1;
test = (char) num; // this does nothing

printf("num = %d , %c\n",num,num);
printf("test = %d , %c\n",test,test);

    // Isn't this the correct way to do it ?? :

num = 3;
test = '3'; // now this is a character 3

printf("num = %d , %c\n",num,num);
printf("test = %d , %c\n",test,test);

return 0;

}

上記のコードの出力は次のとおりです。

num = 1 , 
test = 1 , 
num = 3 , 
test = 51 , 3

では、なぜそれが行われているのですか?? これは正しい方法ではありませんか:- send_data[0] = '0'; send_data[1] = '3';

4

6 に答える 6

1

リテラル記号を char 値にキャストしているだけです。しかし、私はそれが必要だとは思わない。

于 2013-08-20T08:43:00.547 に答える
0
int main() 
{ 
    char ch;
    ch = (char) 0;
    printf("%d\n", ch);   //This will print 0
    printf("%c\n", ch);   //This will print nothing (character whose value is 0 which is NUL)
    ch = (char) 3;
    printf("%d\n", ch);   //This will print 3
    printf("%c\n", ch);   //This will print a character whose value is 3
    return 0;
}

int型をchar型に型キャストしたものです。

    Its good to create a demo program and test it when you get some doubts while reading.
于 2013-08-20T08:43:11.767 に答える