main() {
unsigned int a = 10;
int b = -19;
puts((a+b)>0? "Positive":"Negative");
}Answer : Positive
Explanation : When signed and unsigned arithmetic is done, signed is converted to unsigned and result will be unsigned, ANSI C standard.
This is a blog dedicated to all those problems I faced while making some things work, I might have struggled a lot to get the information from the net, this is to make my life easy whenever next time I want to do the same, or for someone who is in need of help, this may make their life easy too. Thanks for visiting my blog, feel free to mail me in case you have any questions.
main() {
unsigned int a = 10;
int b = -19;
puts((a+b)>0? "Positive":"Negative");
}Answer : Positive
Explanation : When signed and unsigned arithmetic is done, signed is converted to unsigned and result will be unsigned, ANSI C standard.
#ifndef __SHETTY_H_
#define __SHETTY_H_
typedef struct le {
int ld;
le *next;
} le;
typedef struct lh {
le *next;
} lh;
#endif // __SHETTY_H_
Shetty.cpp, this file contains all the functionality required to add or delete from the linked list. The comments are self explanatory.
#include "shetty.h"
#include "malloc.h"
#include "stdio.h"
lh list;
/********************************************
** This function adds an element to Linked
** list, the head to list and element to be
** added is given as params.
** lst - pointer to the head of the list
** ld - an integer data, u can change this
** to whatever type you want to.
********************************************/
void add_list(lh *lst, int ld)
{
le *element;
le **tmp;
element = (le *) malloc (sizeof(*element));
element->ld = ld;
element->next = NULL;
tmp = &(lst->next);
while(*tmp!=NULL)
tmp = &((*tmp)->next);
*tmp = element;
}
/********************************************
** This function removes an element from the
** Linked list
********************************************/
void remove_list(lh *lst, int ld)
{
le **tmp, **prev;
le *deleted;
tmp = &(lst->next);
prev = tmp;
while(*tmp!=NULL)
{
if((*tmp)->ld == ld)
{
deleted = (*prev)->next;
(*prev)->next = (*tmp)->next;
free(deleted);
}
prev = tmp;
tmp = &((*tmp)->next);
}
}
/**************************************
** Display the list to see elements
**************************************/
void disp_list(lh *lst)
{
le **tmp;
tmp = &(lst->next);
while(*tmp!=NULL)
{
printf("%d\t", (*tmp)->ld);
tmp = &((*tmp)->next);
}
printf("\n");
}
int main(void)
{
list.next = NULL;
add_list(&list, 25);
add_list(&list, 30);
disp_list(&list);
add_list(&list, 45);
disp_list(&list);
add_list(&list, 55);
disp_list(&list);
}
Here, only one thing is important in dealing with linked list. i.e we need to get the address of the next pointer in a temp variable, and then change this variable with different address as we traverse the list. We should not modify any of the pointers in the list while traversing, unless we want to add or delete from the list.
#include <windows.h>
#include <stdio.h>
int flag = 1;
void CALLBACK TimerProc(HWND, UINT, UINT, DWORD);
int main()
{
UINT_PTR id;
MSG msg;
id = SetTimer(NULL,
0,
3000,
(TIMERPROC) TimerProc);
while(flag)
{
GetMessage(&msg, NULL, 0, 0);
DispatchMessage(&msg);
}
KillTimer(NULL, id);
return 0;
}
void CALLBACK TimerProc(HWND hwnd,
UINT uMsg,
UINT idEvent,
DWORD dwTime)
{
flag = 0;
printf("I am in Timer Call Back Function \n");
}
So, if You are having the same problem as mine, please do follow this, and hope your problem is resolved, and do get back to me if you need any assistance.