是否有更优雅/更短/有组织的方式来编写这段代码?
for (int i = 0; i < SCREENSIZE; i++) {
for (int j = 0; j < SCREENSIZE; j++) {
if (map[y + i][x + j] == '@')
g.drawImage(item, j * TILESIZE,i * TILESIZE, null);
else if (map[y + i][x + j] == ' ')
g.drawImage(ground, j * TILESIZE,i * TILESIZE, null);
else if (map[y + i][x + j] == 'i')
g.drawImage(bush, j * TILESIZE, i * TILESIZE, null);
else if (map[y + i][x + j] == '~')
g.drawImage(ocean, …Run Code Online (Sandbox Code Playgroud) 我正在观看Jerry Cain的Programming Paradigms Lecture 3视频,其中展示了在int数组和短数组之间进行元素分配后的效果.本质上,参数是如果你要分配一个int数组元素arr[3] = 128,然后暂时将int数组转换为short*并赋值arr[6] = 2,那么arr [3]应该变为128 + 512 = 640,因为2将被解释为在2 ^ 9位置.代码演示:
#include <stdio.h>
int main() {
printf("sizeof(int) is %lu\n", sizeof(int));
printf("sizeof(short) is %lu\n", sizeof(short));
int arr[5];
arr[3] = 128;
((short*)arr)[6] = 2;
printf("arr[3] is equal to %d\n", arr[3]); //expect 640, get 2 instead
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我得到以下输出:
sizeof(int) is 4
sizeof(short) is 2
arr[3] is equal to 2
Run Code Online (Sandbox Code Playgroud)
我希望arr [3]等于640,但它只是等于2.我当然是一个C菜鸟 - 任何人都能解释一下吗?
可能重复:
我如何理解PHP中的嵌套?:运算符?
为什么这样:
$object->customer->phone =
! empty( $object->customer->address->phone_fixed ) ?
$object->customer->address->phone_fixed :
! empty( $object->customer->address->phone_mobile ) ?
$object->customer->address->phone_mobile :
! empty( $object->customer->address->phone_business ) ?
$object->customer->address->phone_business : '';
Run Code Online (Sandbox Code Playgroud)
返回$object->customer->address->phone_business,即使$object->customer->address->phone_fixed设置而不是空?
谢谢.
下面是KeyAdapter我试图只接受小于65535的值.看起来好像它实际应该在它后面的一个击键.例如,如果我输入"55",System.out.println将产生"5",执行"3298"将产生"329"等.
// Allows for unsigned short values only
KeyAdapter unsignedShortAdapter = new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
int tempInt = 0;
JTextField temp = null;
if (!((Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)))) {
getToolkit().beep();
e.consume();
}
try {
temp = (JTextField) e.getSource();
System.out.println(temp.getText());
tempInt = (Integer.parseInt(temp.getText().toString()));
} catch (NumberFormatException e1) {
} finally {
if (tempInt > (Short.MAX_VALUE * 2)) {
getToolkit().beep();
e.consume();
temp.setText(temp.getText().substring(0, temp.getText().length() - 1));
invalidate();
}
}
} …Run Code Online (Sandbox Code Playgroud) 可能重复:
使用C以二进制表示形式打印int
我如何打印short int的字节表示,并在C中加倍.
就像我说有一个函数display_shortInt一样,我如何让它打印short int的字节表示?我是C的新手,谢谢你!
我有一些任务的小问题.
我们对这个问题进行了调查.单个调查的结果(从一个受访者获得)提供了以下信息,这些信息将被编码为无符号短类型的变量(可以假设它是2个字节--16位)
答案 - 3位 - 8种可能性
unsigned short coding(int sex, int marital_status, int age, int edu, int city, int region, int reply){
unsigned short result = 0;
result = result + sex;
result = result + ( marital_status << 1 );
result = result + ( age << 3); …Run Code Online (Sandbox Code Playgroud)我有一个大学的作业,我必须使用C来打包三个表示日期的无符号整数(年份必须在1970年到2097年之间)并将其压缩成无符号的短片,然后再将其解压缩并在命令行中显示.
有谁可以帮助我吗?
下面我留下我到目前为止的代码(函数和函数签名之外的声明变量无法更改)
编辑:我有第二个问题,即getchar函数不返回任何内容,将三个日期字段设置为0 ...
#include <stdio.h>
typedef unsigned short pkdate_t;
typedef struct date3 {
unsigned year;
unsigned month;
unsigned day;
} date3_t;
int ror (int val, unsigned n) {
return (val >> n)|(n << (32 - n));
}
int pack_date (pkdate_t * dst, date3_t * src) {
if ((*src).year < 1097 || (*src).year > 2097 || (*src).month < 1 || (*src).month > 12 || (*src).day < 1 ||
((*src).month == 2 && (((*src).year / 4 == 0 …Run Code Online (Sandbox Code Playgroud) 例如:
10 - > 0000 0000 0000 1010
15 - > 0000 0000 0000 1111
我尝试使用Integer.toBinaryString()但打印
10 - > 1010
15 - > 1111
是否有一个功能可以打印所有16位数的短信或我必须自己写.
我不得不将字符串强制转换为字符串,我唯一能做的就是将空字符串连接起来,这是正确的方法吗?
PS,为什么没有String.valueOf(short a);
我有一个整数
int a = //...
Run Code Online (Sandbox Code Playgroud)
intjava中的s由4个字节组成.如果我们将其转换为short,我们将采用两个最不重要的字节.什么是最快的方法来short组成2个最重要byte的int?
short b = //take two most significant bytes of a
Run Code Online (Sandbox Code Playgroud)