我正在处理public void getPdfFile() {
pdf_link = this.getIntent().getExtras().getString("PDF_URL");
checkStrUrl = pdf_link.substring(pdf_link.lastIndexOf("_") + 1);
if (!checkFileInDevice(checkStrUrl)) {
new RetrievePDFStream().execute(pdf_link);
} else {
File file = new File(Environment.getExternalStorageDirectory().toString() + "/Application Documents/" + checkStrUrl);
pdfView.fromFile(file).load();
}
}
class RetrievePDFStream extends AsyncTask<String, Void, InputStream> {
@Override
protected InputStream doInBackground(String... strings) {
InputStream inputStream = null;
try {
URL url = new URL(strings[0]);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
if (urlConnection.getResponseCode() == 200) {
inputStream = new BufferedInputStream(urlConnection.getInputStream());
}
} catch (IOException e) {
return null;
}
return inputStream;
}
@Override
protected void onPostExecute(InputStream inputStream) {
pdfView.fromStream(inputStream).load();
}
}
当我输入参数为char数据类型
时sizeof()
它将输出设为1。
但是当我进入这样的论点时
J=sizeof(char);
我输出为4。
由于它的参数是J=sizeof('A');
数据类型,它应该返回1作为输出,为什么它返回4/2(取决于32位/ 64位设备)。
答案 0 :(得分:6)
在C中,'A'
不是char
类型的常量,它是int
类型。 (在C ++中它是char
。)
C是这方面的一致性模型;比照C ++,其中'a' + 'b'
是int
类型,是一个多字符常量,如'ab'
。
答案 1 :(得分:5)
看来你的意思是C。
在C字符文字中(在C字符常量中调用)具有类型int
。因此sizeof( 'A' )
相当于sizeof( int )
,通常会产生4
。
从C标准(6.4.4.4字符常量)
10整数字符常量的类型为int。整数的值 包含映射到a的单个字符的字符常量 单字节执行字符是数值 解释为整数的映射字符的表示形式。该 包含多个的整数字符常量的值 字符(例如,&#39; ab&#39;),或包含字符或转义序列 不映射到单字节执行字符的是 实现定义。如果整数字符常量包含a 单个字符或转义序列,其值是产生的值 当一个char类型的对象,其值是单个的 字符或转义序列转换为int。
虽然sizeof( char )
等于1。
来自C标准(6.5.3.4 sizeof和alignof运算符)
4当sizeof应用于类型为char,unsigned的操作数时 char,或signed char,(或其合格版本)的结果是 1 ....